diff --git a/include/verilated_vcd_c.cpp b/include/verilated_vcd_c.cpp index 9f3f5c72e..ff5ea45cc 100644 --- a/include/verilated_vcd_c.cpp +++ b/include/verilated_vcd_c.cpp @@ -569,7 +569,7 @@ void VerilatedVcd::declare (vluint32_t code, const char* name, const char* wirep sprintf(buf, " %2d ", bits); decl += buf; if (m_evcd) { - sprintf(buf, "<%d", code); + sprintf(buf, "<%u", code); decl += buf; } else { decl += stringCode(code); diff --git a/src/V3Ast.cpp b/src/V3Ast.cpp index f53982f0c..c99839962 100644 --- a/src/V3Ast.cpp +++ b/src/V3Ast.cpp @@ -291,7 +291,7 @@ void AstNode::addNextHere(AstNode* newp) { // This could be at head, tail, or both (single) // New could be head of single node, or list UASSERT(newp,"Null item passed to addNext"); - UASSERT(newp->backp()==NULL,"New node (back) already assigned?"); + UASSERT(!newp->backp(), "New node (back) already assigned?"); this->debugTreeChange("-addHereThs: ", __LINE__, false); newp->debugTreeChange("-addHereNew: ", __LINE__, true); newp->editCountInc(); @@ -334,7 +334,7 @@ void AstNode::addNextHere(AstNode* newp) { } void AstNode::setOp1p(AstNode* newp) { - UASSERT(newp,"Null item passed to setOp1p\n"); + UASSERT(newp, "Null item passed to setOp1p"); UDEBUGONLY(if (m_op1p) this->v3fatalSrc("Adding to non-empty, non-list op1");); UDEBUGONLY(if (newp->m_backp) newp->v3fatalSrc("Adding already linked node");); UDEBUGONLY(if (newp->m_nextp) newp->v3fatalSrc("Adding list to non-list op1");); @@ -347,7 +347,7 @@ void AstNode::setOp1p(AstNode* newp) { } void AstNode::setOp2p(AstNode* newp) { - UASSERT(newp,"Null item passed to setOp2p\n"); + UASSERT(newp, "Null item passed to setOp2p"); UDEBUGONLY(if (m_op2p) this->v3fatalSrc("Adding to non-empty, non-list op2");); UDEBUGONLY(if (newp->m_backp) newp->v3fatalSrc("Adding already linked node");); UDEBUGONLY(if (newp->m_nextp) newp->v3fatalSrc("Adding list to non-list op2");); @@ -360,7 +360,7 @@ void AstNode::setOp2p(AstNode* newp) { } void AstNode::setOp3p(AstNode* newp) { - UASSERT(newp,"Null item passed to setOp3p\n"); + UASSERT(newp, "Null item passed to setOp3p"); UDEBUGONLY(if (m_op3p) this->v3fatalSrc("Adding to non-empty, non-list op3");); UDEBUGONLY(if (newp->m_backp) newp->v3fatalSrc("Adding already linked node");); UDEBUGONLY(if (newp->m_nextp) newp->v3fatalSrc("Adding list to non-list op3");); @@ -373,7 +373,7 @@ void AstNode::setOp3p(AstNode* newp) { } void AstNode::setOp4p(AstNode* newp) { - UASSERT(newp,"Null item passed to setOp4p\n"); + UASSERT(newp, "Null item passed to setOp4p"); UDEBUGONLY(if (m_op4p) this->v3fatalSrc("Adding to non-empty, non-list op4");); UDEBUGONLY(if (newp->m_backp) newp->v3fatalSrc("Adding already linked node");); UDEBUGONLY(if (newp->m_nextp) newp->v3fatalSrc("Adding list to non-list op4");); @@ -386,25 +386,25 @@ void AstNode::setOp4p(AstNode* newp) { } void AstNode::addOp1p(AstNode* newp) { - UASSERT(newp,"Null item passed to addOp1p\n"); + UASSERT(newp, "Null item passed to addOp1p"); if (!m_op1p) { op1p(newp); } else { m_op1p->addNext(newp); } } void AstNode::addOp2p(AstNode* newp) { - UASSERT(newp,"Null item passed to addOp2p\n"); + UASSERT(newp, "Null item passed to addOp2p"); if (!m_op2p) { op2p(newp); } else { m_op2p->addNext(newp); } } void AstNode::addOp3p(AstNode* newp) { - UASSERT(newp,"Null item passed to addOp3p\n"); + UASSERT(newp, "Null item passed to addOp3p"); if (!m_op3p) { op3p(newp); } else { m_op3p->addNext(newp); } } void AstNode::addOp4p(AstNode* newp) { - UASSERT(newp,"Null item passed to addOp4p\n"); + UASSERT(newp, "Null item passed to addOp4p"); if (!m_op4p) { op4p(newp); } else { m_op4p->addNext(newp); } } @@ -430,7 +430,7 @@ void AstNRelinker::dump(std::ostream& str) const { AstNode* AstNode::unlinkFrBackWithNext(AstNRelinker* linkerp) { this->debugTreeChange("-unlinkWNextThs: ", __LINE__, true); AstNode* oldp = this; - UASSERT(oldp->m_backp,"Node has no back, already unlinked?\n"); + UASSERT(oldp->m_backp, "Node has no back, already unlinked?"); oldp->editCountInc(); AstNode* backp = oldp->m_backp; if (linkerp) { @@ -478,7 +478,7 @@ AstNode* AstNode::unlinkFrBackWithNext(AstNRelinker* linkerp) { AstNode* AstNode::unlinkFrBack(AstNRelinker* linkerp) { this->debugTreeChange("-unlinkFrBkThs: ", __LINE__, true); AstNode* oldp = this; - UASSERT(oldp->m_backp,"Node has no back, already unlinked?\n"); + UASSERT(oldp->m_backp, "Node has no back, already unlinked?"); oldp->editCountInc(); AstNode* backp = oldp->m_backp; if (linkerp) { @@ -530,8 +530,8 @@ AstNode* AstNode::unlinkFrBack(AstNRelinker* linkerp) { void AstNode::relink(AstNRelinker* linkerp) { if (debug()>8) { UINFO(0," EDIT: relink: "); dumpPtrs(); } AstNode* newp = this; - UASSERT(linkerp && linkerp->m_backp, "Need non-empty linker\n"); - UASSERT(newp->backp()==NULL, "New node already linked?\n"); + UASSERT(linkerp && linkerp->m_backp, "Need non-empty linker"); + UASSERT(!newp->backp(), "New node already linked?"); newp->editCountInc(); if (debug()>8) { linkerp->dump(cout); cout<m_nextp = (AstNode*)1; @@ -711,7 +711,7 @@ void AstNode::deleteTreeIter() { void AstNode::deleteTree() { // deleteTree always deletes the next link, because you must have called // unlinkFromBack or unlinkFromBackWithNext as appropriate before calling this. - UASSERT(m_backp==NULL,"Delete called on node with backlink still set\n"); + UASSERT(!m_backp, "Delete called on node with backlink still set"); this->debugTreeChange("-delTree: ", __LINE__, true); this->editCountInc(); // MUST be depth first! diff --git a/src/V3Case.cpp b/src/V3Case.cpp index 0e9b1d498..d2c6939c7 100644 --- a/src/V3Case.cpp +++ b/src/V3Case.cpp @@ -159,7 +159,7 @@ private: } UINFO(8,"Simple case statement: "<fileline(), iconstp->width()); numval.opBitsOne(iconstp->num()); uint32_t val = numval.toUInt(); - for (uint32_t i=0; i<(1UL<isDefault()) { // Case statement's default... Fill the table - for (uint32_t i=0; i<(1UL<v3warn(CASEINCOMPLETE,"Case values incompletely covered (example pattern 0x"<exprp()->unlinkFrBack(); if (debug()>=9) { - for (uint32_t i=0; i<(1UL<num().isFourState()) { oldp->v3fatalSrc("Already constant??"); } @@ -658,7 +658,7 @@ private: void replaceConstString (AstNode* oldp, const string& num) { // Replace oldp node with a constant set to specified value - UASSERT (oldp, "Null old\n"); + UASSERT(oldp, "Null old"); AstNode* newp = new AstConst(oldp->fileline(), AstConst::String(), num); if (debug()>5) oldp->dumpTree(cout," const_old: "); if (debug()>5) newp->dumpTree(cout," _new: "); diff --git a/src/V3Coverage.cpp b/src/V3Coverage.cpp index 7aaff0b01..f9af81db3 100644 --- a/src/V3Coverage.cpp +++ b/src/V3Coverage.cpp @@ -378,6 +378,7 @@ public: explicit CoverageVisitor(AstNetlist* rootp) { // Operate on all modules m_checkBlock = true; + m_modp = NULL; m_beginHier = ""; m_inToggleOff = false; m_inModOff = true; diff --git a/src/V3Delayed.cpp b/src/V3Delayed.cpp index d6df46564..73d408c21 100644 --- a/src/V3Delayed.cpp +++ b/src/V3Delayed.cpp @@ -115,7 +115,8 @@ private: <varp()->prettyName()); } } - AstVarScope* createVarSc(AstVarScope* oldvarscp, string name, int width/*0==fromoldvar*/, AstNodeDType* newdtypep) { + AstVarScope* createVarSc(AstVarScope* oldvarscp, const string& name, + int width/*0==fromoldvar*/, AstNodeDType* newdtypep) { // Because we've already scoped it, we may need to add both the AstVar and the AstVarScope if (!oldvarscp->scopep()) oldvarscp->v3fatalSrc("Var unscoped"); AstVar* varp; diff --git a/src/V3DepthBlock.cpp b/src/V3DepthBlock.cpp index df71afe5d..63bbd357f 100644 --- a/src/V3DepthBlock.cpp +++ b/src/V3DepthBlock.cpp @@ -122,8 +122,10 @@ private: public: // CONSTUCTORS explicit DepthBlockVisitor(AstNetlist* nodep) { - m_modp=NULL; - m_depth=0; + m_modp = NULL; + m_funcp = NULL; + m_depth = 0; + m_deepNum = 0; // iterate(nodep); } diff --git a/src/V3Descope.cpp b/src/V3Descope.cpp index 8a23ff0c9..5e98e9186 100644 --- a/src/V3Descope.cpp +++ b/src/V3Descope.cpp @@ -83,7 +83,7 @@ private: // false if the object is in another scope. string descopedName(const AstScope* scopep, bool& hierThisr, const AstVar* varp=NULL) { - UASSERT(scopep, "Var/Func not scoped\n"); + UASSERT(scopep, "Var/Func not scoped"); hierThisr = (scopep == m_scopep); // It's possible to disable relative references. This is a concession diff --git a/src/V3EmitC.cpp b/src/V3EmitC.cpp index 92a1f7416..d0927e02c 100644 --- a/src/V3EmitC.cpp +++ b/src/V3EmitC.cpp @@ -989,7 +989,7 @@ class EmitCImp : EmitCStmts { // High level void emitImp(AstNodeModule* modp); void emitStaticDecl(AstNodeModule* modp); - void emitSettleLoop(std::string eval_call, bool initial); + void emitSettleLoop(const std::string& eval_call, bool initial); void emitWrapEval(AstNodeModule* modp); void emitInt(AstNodeModule* modp); void maybeSplit(AstNodeModule* modp); @@ -1751,7 +1751,7 @@ void EmitCImp::emitSensitives() { } } -void EmitCImp::emitSettleLoop(std::string eval_call, bool initial) { +void EmitCImp::emitSettleLoop(const std::string& eval_call, bool initial) { putsDecoration("// Evaluate till stable\n"); puts("int __VclockLoop = 0;\n"); puts("QData __Vchange = 1;\n"); diff --git a/src/V3Expand.cpp b/src/V3Expand.cpp index d03e6bf22..5204f0144 100644 --- a/src/V3Expand.cpp +++ b/src/V3Expand.cpp @@ -825,6 +825,8 @@ private: // Rather than doing a (slowish) ==##, we OR in the bits that aren't part of the mask eqp = new AstOr (nodep->fileline(), new AstConst (nodep->fileline(), notWideMask(nodep->lhsp())), + // Bug in cppcheck + // cppcheck-suppress memleak eqp); } newp = (newp==NULL) ? eqp : (new AstAnd (nodep->fileline(), newp, eqp)); diff --git a/src/V3File.h b/src/V3File.h index caec2ca85..9f413f189 100644 --- a/src/V3File.h +++ b/src/V3File.h @@ -152,7 +152,7 @@ public: void indentInc() { m_indentLevel += m_blockIndent; } void indentDec() { m_indentLevel -= m_blockIndent; - UASSERT(m_indentLevel>=0, ": "<=0, ": "<verticesNextp()) { OrderEitherVertex* vertexp = dynamic_cast(itp); - UASSERT(vertexp, "Null or vertex not derived from EitherVertex\n"); + UASSERT(vertexp, "Null or vertex not derived from EitherVertex"); processDomainsIterate(vertexp); } } @@ -1497,7 +1497,7 @@ void OrderVisitor::processMoveDoneOne(OrderMoveVertex* vertexp) { } void OrderVisitor::processMoveOne(OrderMoveVertex* vertexp, OrderMoveDomScope* domScopep, int level) { - UASSERT(vertexp->domScopep() == domScopep, "Domain mismatch; list misbuilt?\n"); + UASSERT(vertexp->domScopep() == domScopep, "Domain mismatch; list misbuilt?"); OrderLogicVertex* lvertexp = vertexp->logicp(); AstScope* scopep = lvertexp->scopep(); UINFO(5," POSmove l"<Ready on node not in proper state\n"); + UASSERT(m_state==POM_WAIT, "Wait->Ready on node not in proper state"); m_state = POM_READY; } void setMoved() { - UASSERT(m_state==POM_READY, "Ready->Moved on node not in proper state\n"); + UASSERT(m_state==POM_READY, "Ready->Moved on node not in proper state"); m_state = POM_MOVED; } OrderMoveDomScope* domScopep() const { return m_domScopep; } diff --git a/src/V3Os.cpp b/src/V3Os.cpp index fb39cd98b..55c65201b 100644 --- a/src/V3Os.cpp +++ b/src/V3Os.cpp @@ -211,9 +211,9 @@ uint64_t V3Os::memUsageBytes() { if (!fp) { return 0; } - uint64_t size, resident, share, text, lib, data, dt; // All in pages - if (7 != fscanf(fp, "%" VL_PRI64 "d %" VL_PRI64 "d %" VL_PRI64 "d %" - VL_PRI64 "d %" VL_PRI64 "d %" VL_PRI64 "d %" VL_PRI64 "d", + vluint64_t size, resident, share, text, lib, data, dt; // All in pages + if (7 != fscanf(fp, "%" VL_PRI64 "u %" VL_PRI64 "u %" VL_PRI64 "u %" + VL_PRI64 "u %" VL_PRI64 "u %" VL_PRI64 "u %" VL_PRI64 "u", &size, &resident, &share, &text, &lib, &data, &dt)) { fclose(fp); return 0; diff --git a/src/V3Task.cpp b/src/V3Task.cpp index 92fa75479..58b847357 100644 --- a/src/V3Task.cpp +++ b/src/V3Task.cpp @@ -1254,7 +1254,9 @@ public: m_modp = NULL; m_topScopep = NULL; m_scopep = NULL; + m_insMode = IM_BEFORE; m_insStmtp = NULL; + m_modNCalls = 0; AstNode::user1ClearTree(); iterate(nodep); } diff --git a/src/V3Trace.cpp b/src/V3Trace.cpp index c5f2051e2..f24bd04c0 100644 --- a/src/V3Trace.cpp +++ b/src/V3Trace.cpp @@ -696,6 +696,8 @@ public: m_chgSubFuncp = NULL; m_chgSubParentp = NULL; m_chgSubStmts = 0; + m_code = 0; + m_finding = false; m_funcNum = 0; iterate(nodep); } diff --git a/src/V3Unroll.cpp b/src/V3Unroll.cpp index 05769e205..0442e0b28 100644 --- a/src/V3Unroll.cpp +++ b/src/V3Unroll.cpp @@ -457,9 +457,11 @@ public: UnrollVisitor(AstNode* nodep, bool generate, const string& beginName) { m_forVarp = NULL; m_forVscp = NULL; + m_varValuep = NULL; m_ignoreIncp = NULL; m_varModeCheck = false; m_varModeReplace = false; + m_varAssignHit = false; m_generate = generate; m_beginName = beginName; //