diff --git a/src/V3Ast.cpp b/src/V3Ast.cpp index cd2e2246c..a6f803b3e 100644 --- a/src/V3Ast.cpp +++ b/src/V3Ast.cpp @@ -146,6 +146,9 @@ string AstNode::encodeNumber(vlsint64_t num) { string AstNode::nameProtect() const { return VIdProtect::protectIf(name(), protect()); } +string AstNode::origNameProtect() const { + return VIdProtect::protectIf(origName(), protect()); +} string AstNode::shortName() const { string pretty = name(); diff --git a/src/V3Ast.h b/src/V3Ast.h index 5206ef0bb..41d559f65 100644 --- a/src/V3Ast.h +++ b/src/V3Ast.h @@ -1278,11 +1278,13 @@ public: // ACCESSORS virtual string name() const { return ""; } + virtual string origName() const { return ""; } virtual void name(const string& name) { this->v3fatalSrc("name() called on object without name() method"); } virtual void tag(const string& text) {} virtual string tag() const { return ""; } virtual string verilogKwd() const { return ""; } string nameProtect() const; // Name with --protect-id applied + string origNameProtect() const; // origName with --protect-id applied string shortName() const; // Name with __PVT__ removed for concatenating scopes static string dedotName(const string& namein); // Name with dots removed static string prettyName(const string& namein); // Name for printing out to the user @@ -2240,7 +2242,7 @@ public: void addActivep(AstNode* nodep) { addOp3p(nodep); } // ACCESSORS virtual void name(const string& name) { m_name = name; } - string origName() const { return m_origName; } + virtual string origName() const { return m_origName; } string hierName() const { return m_hierName; } void hierName(const string& hierName) { m_hierName = hierName; } bool inLibrary() const { return m_inLibrary; } diff --git a/src/V3AstNodes.h b/src/V3AstNodes.h index 9f2ca053b..4eb5a3090 100644 --- a/src/V3AstNodes.h +++ b/src/V3AstNodes.h @@ -1517,7 +1517,7 @@ public: virtual string name() const { return m_name; } // * = Var name virtual bool hasDType() const { return true; } virtual bool maybePointedTo() const { return true; } - string origName() const { return m_origName; } // * = Original name + virtual string origName() const { return m_origName; } // * = Original name void origName(const string& name) { m_origName = name; } AstVarType varType() const { return m_varType; } // * = Type of variable void direction(const VDirection& flag) { @@ -2177,7 +2177,7 @@ public: // ACCESSORS virtual string name() const { return m_name; } // * = Cell name virtual void name(const string& name) { m_name = name; } - string origName() const { return m_origName; } // * = Original name + virtual string origName() const { return m_origName; } // * = Original name void origName(const string& name) { m_origName = name; } string modName() const { return m_modName; } // * = Instance name void modName(const string& name) { m_modName = name; }