mirror of
https://github.com/verilator/verilator.git
synced 2026-10-06 18:13:50 +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:
+3
-3
@@ -185,8 +185,8 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
//######################################################################
|
||||
// Is this a simple math expression with a single input and single output?
|
||||
// ######################################################################
|
||||
// Is this a simple expression with a single input and single output?
|
||||
|
||||
class GateOkVisitor final : public VNVisitor {
|
||||
private:
|
||||
@@ -801,7 +801,7 @@ private:
|
||||
// comparing AstActive nodes, which are very likely not to compare equals (and for the
|
||||
// purposes of V3Gate, we probably only care about them either being identical instances,
|
||||
// or having the same sensitivities anyway, so if this becomes a problem, it can be
|
||||
// improved which should also speed things up), and AstNodeMath for if conditions, which
|
||||
// improved which should also speed things up), and AstNodeExpr for if conditions, which
|
||||
// are hopefully small, and to be safe they should probably be only considered same when
|
||||
// identical instances (otherwise if writing the condition between 2 ifs don't really
|
||||
// merge).
|
||||
|
||||
Reference in New Issue
Block a user