Optimize constant string arguments before Emit, and cleanup V3EmitV

This commit is contained in:
Wilson Snyder
2025-10-12 20:09:03 -04:00
parent eae1e5bdf2
commit 01157d414b
8 changed files with 36 additions and 65 deletions
+13 -1
View File
@@ -283,6 +283,16 @@ class EmitVBaseVisitorConst VL_NOT_FINAL : public VNVisitorConst {
void visit(AstCoverInc*) override {} // N/A
void visit(AstCoverToggle*) override {} // N/A
void visit(AstCvtPackString* nodep) override {
putfs(nodep, "");
if (AstConst* const lhsConstp = VN_CAST(nodep->lhsp(), Const)) {
putsQuoted(lhsConstp->num().toString());
} else {
puts("string'(");
iterateAndNextConstNull(nodep->lhsp());
puts(")");
}
}
void visit(AstTestPlusArgs* nodep) override {
putfs(nodep, nodep->verilogKwd());
putbs("(");
@@ -292,7 +302,9 @@ class EmitVBaseVisitorConst VL_NOT_FINAL : public VNVisitorConst {
void visit(AstValuePlusArgs* nodep) override {
putfs(nodep, nodep->verilogKwd());
putbs("(");
iterateChildrenConst(nodep);
iterateConstNull(nodep->searchp());
putbs(", ");
iterateConstNull(nodep->outp());
puts(")");
}
void visitNodeDisplay(AstNode* nodep, AstNode* fileOrStrgp, const string& text,