From 5b83484f20482cce9e95b538d6b1b386cc12e353 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Tue, 25 Feb 2020 18:57:51 -0500 Subject: [PATCH] Remove dead genblk code & some cleanups. --- src/V3AstNodes.h | 15 --------------- src/V3EmitV.cpp | 7 +------ src/V3LinkDot.cpp | 15 --------------- src/V3Param.cpp | 14 -------------- src/verilog.y | 12 +++++++----- 5 files changed, 8 insertions(+), 55 deletions(-) diff --git a/src/V3AstNodes.h b/src/V3AstNodes.h index dcba2822f..b7b5fe89e 100644 --- a/src/V3AstNodes.h +++ b/src/V3AstNodes.h @@ -2332,21 +2332,6 @@ public: //###################################################################### -class AstGenerate : public AstNode { - // A Generate/end block - // Parents: MODULE - // Children: modItems -public: - AstGenerate(FileLine* fl, AstNode* stmtsp) - : ASTGEN_SUPER(fl) { - addNOp1p(stmtsp); - } - ASTNODE_NODE_FUNCS(Generate) - // op1 = Statements - AstNode* stmtsp() const { return op1p(); } // op1 = List of statements - void addStmtp(AstNode* nodep) { addOp1p(nodep); } -}; - class AstParseRef : public AstNode { // A reference to a variable, function or task // We don't know which at parse time due to bison constraints diff --git a/src/V3EmitV.cpp b/src/V3EmitV.cpp index a07f6d477..afa57b8cf 100644 --- a/src/V3EmitV.cpp +++ b/src/V3EmitV.cpp @@ -76,7 +76,7 @@ class EmitVBaseVisitor : public EmitCBaseVisitor { } virtual void visit(AstBegin* nodep) VL_OVERRIDE { - if (nodep->unnamed()) { + if (nodep->name() == "") { putbs("begin\n"); } else { putbs("begin : "+nodep->name()+"\n"); @@ -84,11 +84,6 @@ class EmitVBaseVisitor : public EmitCBaseVisitor { iterateChildren(nodep); puts("end\n"); } - virtual void visit(AstGenerate* nodep) VL_OVERRIDE { - putfs(nodep, "generate\n"); - iterateChildren(nodep); - putqs(nodep, "end\n"); - } virtual void visit(AstFinal* nodep) VL_OVERRIDE { putfs(nodep, "final begin\n"); iterateChildren(nodep); diff --git a/src/V3LinkDot.cpp b/src/V3LinkDot.cpp index c7a045d1d..17db13e72 100644 --- a/src/V3LinkDot.cpp +++ b/src/V3LinkDot.cpp @@ -683,7 +683,6 @@ class LinkDotFindVisitor : public AstNVisitor { string m_scope; // Scope text AstBegin* m_beginp; // Current Begin/end block AstNodeFTask* m_ftaskp; // Current function/task - bool m_inGenerate; // Inside a generate bool m_inRecursion; // Inside a recursive module int m_paramNum; // Parameter number, for position based connection int m_beginNum; // Begin block number, 0=none seen @@ -891,16 +890,6 @@ class LinkDotFindVisitor : public AstNVisitor { nodep->user1p(m_curSymp); iterateChildren(nodep); } - virtual void visit(AstGenerate* nodep) VL_OVERRIDE { - // Begin: ... blocks often replicate under genif/genfor, so simply - // suppress duplicate checks. See t_gen_forif.v for an example. - bool lastInGen = m_inGenerate; - { - m_inGenerate = true; - iterateChildren(nodep); - } - m_inGenerate = lastInGen; - } virtual void visit(AstBegin* nodep) VL_OVERRIDE { UINFO(5," "<name(nodep->name()+cvtToStr(m_beginNum)); } - // Just for loop index, make special name. The [00] is so it will "dearray" to same - // name as after we expand the GENFOR - if (nodep->genforp()) nodep->name(nodep->name()); } // All blocks are numbered in the standard, IE we start with "genblk1" even if only one. if (nodep->name()=="" && nodep->unnamed()) { @@ -1202,7 +1188,6 @@ public: m_statep = statep; m_beginp = NULL; m_ftaskp = NULL; - m_inGenerate = false; m_inRecursion = false; m_paramNum = 0; m_beginNum = 0; diff --git a/src/V3Param.cpp b/src/V3Param.cpp index 1d758de07..9b551167c 100644 --- a/src/V3Param.cpp +++ b/src/V3Param.cpp @@ -431,20 +431,6 @@ private: } // Generate Statements - virtual void visit(AstGenerate* nodep) VL_OVERRIDE { - if (debug()>=9) nodep->dumpTree(cout, "-genin: "); - iterateChildren(nodep); - // After expanding the generate, all statements under it can be moved - // up, and the generate block deleted as it's not relevant - if (AstNode* stmtsp = nodep->stmtsp()) { - stmtsp->unlinkFrBackWithNext(); - nodep->replaceWith(stmtsp); - if (debug()>=9) stmtsp->dumpTree(cout, "-genout: "); - } else { - nodep->unlinkFrBack(); - } - VL_DO_DANGLING(nodep->deleteTree(), nodep); - } virtual void visit(AstGenIf* nodep) VL_OVERRIDE { UINFO(9," GENIF "<condp()); diff --git a/src/verilog.y b/src/verilog.y index 9427d1b8d..211e60a0b 100644 --- a/src/verilog.y +++ b/src/verilog.y @@ -1155,7 +1155,7 @@ interface_item: // IEEE: interface_item + non_port_interface_item ; interface_generate_region: // ==IEEE: generate_region - yGENERATE interface_itemList yENDGENERATE { $$ = new AstGenerate($1, $2); } + yGENERATE interface_itemList yENDGENERATE { $$ = $2; } | yGENERATE yENDGENERATE { $$ = NULL; } ; @@ -2035,7 +2035,7 @@ bind_instantiation: // ==IEEE: bind_instantiation // different, so we copy all rules for checkers. generate_region: // ==IEEE: generate_region - yGENERATE ~c~genItemList yENDGENERATE { $$ = new AstGenerate($1, $2); } + yGENERATE ~c~genItemList yENDGENERATE { $$ = $2; } | yGENERATE yENDGENERATE { $$ = NULL; } ; @@ -2043,7 +2043,7 @@ generate_region: // ==IEEE: generate_region //UNSUP BISONPRE_COPY(generate_region,{s/~c~/c_/g}) // {copied} //UNSUP ; -generate_block_or_null: // IEEE: generate_block_or_null +generate_block_or_null: // IEEE: generate_block_or_null (called from gencase/genif/genfor) // ';' // is included in // // IEEE: generate_block // // Must always return a BEGIN node, or NULL - see GenFor construction @@ -2054,9 +2054,11 @@ generate_block_or_null: // IEEE: generate_block_or_null genItemBegin: // IEEE: part of generate_block yBEGIN ~c~genItemList yEND { $$ = new AstBegin($1,"genblk",$2,true); } | yBEGIN yEND { $$ = NULL; } - | id ':' yBEGIN ~c~genItemList yEND endLabelE { $$ = new AstBegin($1,*$1,$4,true); GRAMMARP->endLabel($6,*$1,$6); } + | id ':' yBEGIN ~c~genItemList yEND endLabelE + { $$ = new AstBegin($1,*$1,$4,true); GRAMMARP->endLabel($6,*$1,$6); } | id ':' yBEGIN yEND endLabelE { $$ = NULL; GRAMMARP->endLabel($5,*$1,$5); } - | yBEGIN ':' idAny ~c~ genItemList yEND endLabelE { $$ = new AstBegin($3,*$3,$4,true); GRAMMARP->endLabel($6,*$3,$6); } + | yBEGIN ':' idAny ~c~genItemList yEND endLabelE + { $$ = new AstBegin($3,*$3,$4,true); GRAMMARP->endLabel($6,*$3,$6); } | yBEGIN ':' idAny yEND endLabelE { $$ = NULL; GRAMMARP->endLabel($5,*$3,$5); } ;