From c86fec5307fa03d6a53eb8be4ba5ebb594ba7f84 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Sun, 21 Sep 2014 08:52:09 -0400 Subject: [PATCH] Fix string formats under deep expressions, bug820. --- Changes | 2 ++ src/V3AstNodes.h | 4 ++-- src/V3Premit.cpp | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Changes b/Changes index 665a8f9b1..390f8e668 100644 --- a/Changes +++ b/Changes @@ -25,6 +25,8 @@ indicates the contributor was also the author of the fix; Thanks! **** Fix clang warnings, bug818. [Iztok Jeras] +**** Fix string formats under deep expressions, bug820. [Iztok Jeras] + * Verilator 3.862 2014-06-10 diff --git a/src/V3AstNodes.h b/src/V3AstNodes.h index 355c847cd..a11a5cc03 100644 --- a/src/V3AstNodes.h +++ b/src/V3AstNodes.h @@ -2224,13 +2224,13 @@ public: void filep(AstNodeVarRef* nodep) { setNOp3p(nodep); } }; -class AstSFormat : public AstNode { +class AstSFormat : public AstNodeStmt { // Parents: statement container // Children: string to load // Children: SFORMATF to generate print string public: AstSFormat(FileLine* fileline, AstNode* lhsp, const string& text, AstNode* exprsp) - : AstNode (fileline) { + : AstNodeStmt (fileline) { setOp1p(new AstSFormatF(fileline,text,true,exprsp)); setOp3p(lhsp); } diff --git a/src/V3Premit.cpp b/src/V3Premit.cpp index 481d3f61c..0b4605468 100644 --- a/src/V3Premit.cpp +++ b/src/V3Premit.cpp @@ -170,11 +170,13 @@ private: m_inWhilep->addPrecondsp(newp); } else if (m_inTracep) { m_inTracep->addPrecondsp(newp); - } else { + } else if (m_stmtp) { AstNRelinker linker; m_stmtp->unlinkFrBack(&linker); newp->addNext(m_stmtp); linker.relink(newp); + } else { + newp->v3fatalSrc("No statement insertion point."); } }