From 023526ad4b43d4bda785a5d0bc834ab3cd068d8b Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Wed, 15 Jan 2020 20:18:12 -0500 Subject: [PATCH] Internals: Minor refactoring from class branch. --- src/V3AstNodes.cpp | 6 ++++++ src/V3AstNodes.h | 1 + src/V3LinkResolve.cpp | 6 +++--- src/V3Task.cpp | 5 ++--- src/verilog.y | 10 +++++++--- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/V3AstNodes.cpp b/src/V3AstNodes.cpp index 367486b05..e0c4a906c 100644 --- a/src/V3AstNodes.cpp +++ b/src/V3AstNodes.cpp @@ -999,6 +999,12 @@ void AstJumpGo::dump(std::ostream& str) const { if (labelp()) { labelp()->dump(str); } else { str<<"%Error:UNLINKED"; } } +void AstMemberSel::dump(std::ostream& str) const { + this->AstNode::dump(str); + str << " -> "; + if (varp()) { varp()->dump(str); } + else { str << "%Error:UNLINKED"; } +} void AstModportFTaskRef::dump(std::ostream& str) const { this->AstNode::dump(str); if (isExport()) str<<" EXPORT"; diff --git a/src/V3AstNodes.h b/src/V3AstNodes.h index b0254ae52..b60e4b383 100644 --- a/src/V3AstNodes.h +++ b/src/V3AstNodes.h @@ -2064,6 +2064,7 @@ public: virtual void cloneRelink() { if (m_varp && m_varp->clonep()) { m_varp = m_varp->clonep(); } } virtual const char* broken() const { BROKEN_RTN(m_varp && !m_varp->brokeExists()); return NULL; } + virtual void dump(std::ostream& str) const; virtual string name() const { return m_name; } virtual V3Hash sameHash() const { return V3Hash(m_name); } virtual void numberOperate(V3Number& out, const V3Number& lhs, const V3Number& rhs) { diff --git a/src/V3LinkResolve.cpp b/src/V3LinkResolve.cpp index 8dba07d89..512400143 100644 --- a/src/V3LinkResolve.cpp +++ b/src/V3LinkResolve.cpp @@ -49,12 +49,12 @@ private: // NODE STATE // Entire netlist: // AstCaseItem::user2() // bool Moved default caseitems - AstUser2InUse m_inuser2; + AstUser2InUse m_inuser2; // STATE // Below state needs to be preserved between each module call. - AstNodeModule* m_modp; // Current module - AstNodeFTask* m_ftaskp; // Function or task we're inside + AstNodeModule* m_modp; // Current module + AstNodeFTask* m_ftaskp; // Function or task we're inside AstNodeCoverOrAssert* m_assertp; // Current assertion int m_senitemCvtNum; // Temporary signal counter diff --git a/src/V3Task.cpp b/src/V3Task.cpp index 80a97c9ac..223c5f6c2 100644 --- a/src/V3Task.cpp +++ b/src/V3Task.cpp @@ -129,15 +129,14 @@ public: return iter->second; } bool ftaskNoInline(AstNodeFTask* nodep) { - return (getFTaskVertex(nodep)->noInline()); + return getFTaskVertex(nodep)->noInline(); } AstCFunc* ftaskCFuncp(AstNodeFTask* nodep) { - return (getFTaskVertex(nodep)->cFuncp()); + return getFTaskVertex(nodep)->cFuncp(); } void ftaskCFuncp(AstNodeFTask* nodep, AstCFunc* cfuncp) { getFTaskVertex(nodep)->cFuncp(cfuncp); } - void checkPurity(AstNodeFTask* nodep) { checkPurity(nodep, getFTaskVertex(nodep)); } diff --git a/src/verilog.y b/src/verilog.y index 2a7d882e1..137038e87 100644 --- a/src/verilog.y +++ b/src/verilog.y @@ -5354,13 +5354,17 @@ classExtendsE: // IEEE: part of class_declaration classExtendsList: // IEEE: part of class_declaration classExtendsOne { $$ = $1; } - | classExtendsList ',' classExtendsOne { $$ = AstNode::addNextNull($1, $3); } + | classExtendsList ',' classExtendsOne + { $$ = $3; BBUNSUP($3, "Multiple inheritance illegal on non-interface classes (IEEE 8.13)" + ", and unsupported for interface classes."); } ; classExtendsOne: // IEEE: part of class_declaration - class_typeWithoutId { $$ = NULL; BBUNSUP($1, "Unsupported: extends"); } + class_typeWithoutId + { $$ = NULL; BBUNSUP($1, "Unsupported: extends"); } // // IEEE: Might not be legal to have more than one set of parameters in an extends - | class_typeWithoutId '(' list_of_argumentsE ')' { $$ = NULL; BBUNSUP($1, "Unsupported: extends"); } + | class_typeWithoutId '(' list_of_argumentsE ')' + { $$ = NULL; BBUNSUP($1, "Unsupported: extends"); } ; classImplementsE: // IEEE: part of class_declaration