From ea61559ab59f29702e71c9960a6defd64c3ff19a Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Sun, 25 Nov 2018 19:10:18 -0500 Subject: [PATCH] Internals: Cleaner name for var. No functional change. --- src/V3Undriven.cpp | 50 +++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/V3Undriven.cpp b/src/V3Undriven.cpp index 27987ce29..beddd9203 100644 --- a/src/V3Undriven.cpp +++ b/src/V3Undriven.cpp @@ -233,8 +233,8 @@ private: // STATE std::vector m_entryps[3]; // Nodes to delete when we are finished bool m_inBBox; // In black box; mark as driven+used - AstNodeFTask* m_taskp; // Current task - AstAlways* m_alwaysp; // Current always if combo, otherwise NULL + AstNodeFTask* m_taskp; // Current task + AstAlways* m_alwaysCombp; // Current always if combo, otherwise NULL // METHODS VL_DEBUG_FUNC; // Declare debug() @@ -268,9 +268,9 @@ private: // VISITORS virtual void visit(AstVar* nodep) { - for (int usr=1; usr<(m_alwaysp?3:2); ++usr) { - // For assigns and non-combo always, do just usr==1, to look for module-wide undriven etc - // For non-combo always, run both usr==1 for above, and also usr==2 for always-only checks + for (int usr=1; usr<(m_alwaysCombp?3:2); ++usr) { + // For assigns and non-combo always, do just usr==1, to look for module-wide undriven etc + // For non-combo always, run both usr==1 for above, and also usr==2 for always-only checks UndrivenVarEntry* entryp = getEntryp(nodep, usr); if (nodep->isNonOutput() || nodep->isSigPublic() || nodep->isSigUserRWPublic() @@ -299,12 +299,12 @@ private: AstNodeVarRef* varrefp = VN_CAST(nodep->fromp(), NodeVarRef); AstConst* constp = VN_CAST(nodep->lsbp(), Const); if (varrefp && constp && !constp->num().isFourState()) { - for (int usr=1; usr<(m_alwaysp?3:2); ++usr) { + for (int usr=1; usr<(m_alwaysCombp?3:2); ++usr) { UndrivenVarEntry* entryp = getEntryp(varrefp->varp(), usr); - int lsb = constp->toUInt(); - if (m_inBBox || varrefp->lvalue()) { - // Don't warn if already driven earlier as "a=0; if(a) a=1;" is fine. - if (usr==2 && m_alwaysp && entryp->isUsedNotDrivenBit(lsb, nodep->width())) { + int lsb = constp->toUInt(); + if (m_inBBox || varrefp->lvalue()) { + // Don't warn if already driven earlier as "a=0; if(a) a=1;" is fine. + if (usr==2 && m_alwaysCombp && entryp->isUsedNotDrivenBit(lsb, nodep->width())) { UINFO(9," Select. Entryp="<varp(), usr); - bool fdrv = nodep->lvalue() && nodep->varp()->attrFileDescr(); // FD's are also being read from - if (m_inBBox || nodep->lvalue()) { - if (usr==2 && m_alwaysp && entryp->isUsedNotDrivenAny()) { + bool fdrv = nodep->lvalue() && nodep->varp()->attrFileDescr(); // FD's are also being read from + if (m_inBBox || nodep->lvalue()) { + if (usr==2 && m_alwaysCombp && entryp->isUsedNotDrivenAny()) { UINFO(9," Full bus. Entryp="<keyword() == VAlwaysKwd::ALWAYS_COMB) UINFO(9," "<keyword() == VAlwaysKwd::ALWAYS_COMB) m_alwaysp = nodep; - else m_alwaysp = NULL; + AstAlways* prevAlwp = m_alwaysCombp; + { + AstNode::user2ClearTree(); + if (nodep->keyword() == VAlwaysKwd::ALWAYS_COMB) UINFO(9," "<keyword() == VAlwaysKwd::ALWAYS_COMB) m_alwaysCombp = nodep; + else m_alwaysCombp = NULL; iterateChildren(nodep); - if (nodep->keyword() == VAlwaysKwd::ALWAYS_COMB) UINFO(9," Done "<keyword() == VAlwaysKwd::ALWAYS_COMB) UINFO(9," Done "<