mirror of
https://github.com/verilator/verilator.git
synced 2026-09-01 18:36:28 +02:00
Make all expressions derive from AstNodeExpr (#3721).
Apart from the representational changes below, this patch renames AstNodeMath to AstNodeExpr, and AstCMath to AstCExpr. Now every expression (i.e.: those AstNodes that represent a [possibly void] value, with value being interpreted in a very general sense) has AstNodeExpr as a super class. This necessitates the introduction of an AstStmtExpr, which represents an expression in statement position, e.g : 'foo();' would be represented as AstStmtExpr(AstCCall(foo)). In exchange we can get rid of isStatement() in AstNodeStmt, which now really always represent a statement Peak memory consumption and verilation speed are not measurably changed. Partial step towards #3420
This commit is contained in:
+2
-4
@@ -485,9 +485,8 @@ private:
|
||||
AstIf* const ifp = new AstIf{flp, dlyRef(VAccess::READ)};
|
||||
postp->addStmtsp(ifp);
|
||||
AstCMethodHard* const callp = new AstCMethodHard{flp, vrefp, "fire"};
|
||||
callp->statement(true);
|
||||
callp->dtypeSetVoid();
|
||||
ifp->addThensp(callp);
|
||||
ifp->addThensp(callp->makeStmt());
|
||||
}
|
||||
|
||||
AstActive* const activep = createActive(nodep);
|
||||
@@ -501,8 +500,7 @@ private:
|
||||
AstCMethodHard* const callp
|
||||
= new AstCMethodHard{flp, nodep->operandp()->unlinkFrBack(), "fire"};
|
||||
callp->dtypeSetVoid();
|
||||
callp->statement(true);
|
||||
nodep->replaceWith(callp);
|
||||
nodep->replaceWith(callp->makeStmt());
|
||||
}
|
||||
nodep->deleteTree();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user