From bed9aa9904e7bcaace68674c0f838fc162bb7e13 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Tue, 21 Jan 2025 19:51:43 -0500 Subject: [PATCH] Internals: Cleanup std::string empty string constructors. --- src/V3EmitCFunc.cpp | 15 +++++++++------ src/V3EmitCFunc.h | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/V3EmitCFunc.cpp b/src/V3EmitCFunc.cpp index d39c8c4b0..97335c62e 100644 --- a/src/V3EmitCFunc.cpp +++ b/src/V3EmitCFunc.cpp @@ -456,9 +456,7 @@ void EmitCFunc::emitDereference(AstNode* nodep, const string& pointer) { void EmitCFunc::emitCvtPackStr(AstNode* nodep) { if (const AstConst* const constp = VN_CAST(nodep, Const)) { - putnbs(nodep, "std::string{"); - putsQuoted(constp->num().toString()); - puts("}"); + emitConstantString(constp); } else if (VN_IS(nodep->dtypep(), StreamDType)) { putnbs(nodep, "VL_CVT_PACK_STR_ND("); iterateAndNextConstNull(nodep); @@ -494,9 +492,7 @@ void EmitCFunc::emitConstant(AstConst* nodep, AstVarRef* assigntop, const string } else if (nodep->num().isFourState()) { nodep->v3warn(E_UNSUPPORTED, "Unsupported: 4-state numbers in this context"); } else if (nodep->num().isString()) { - putnbs(nodep, "std::string{"); - putsQuoted(nodep->num().toString()); - puts("}"); + emitConstantString(nodep); } else if (nodep->isWide()) { int upWidth = nodep->num().widthMin(); int chunks = 0; @@ -594,6 +590,13 @@ void EmitCFunc::emitConstant(AstConst* nodep, AstVarRef* assigntop, const string } } +void EmitCFunc::emitConstantString(const AstConst* nodep) { + putnbs(nodep, "std::string{"); + const string str = nodep->num().toString(); + if (!str.empty()) putsQuoted(str); + puts("}"); +} + void EmitCFunc::emitSetVarConstant(const string& assignString, AstConst* constp) { if (!constp->isWide()) { puts(assignString); diff --git a/src/V3EmitCFunc.h b/src/V3EmitCFunc.h index e79109502..3512a7c58 100644 --- a/src/V3EmitCFunc.h +++ b/src/V3EmitCFunc.h @@ -208,6 +208,7 @@ public: void emitCvtPackStr(AstNode* nodep); void emitCvtWideArray(AstNode* nodep, AstNode* fromp); void emitConstant(AstConst* nodep, AstVarRef* assigntop, const string& assignString); + void emitConstantString(const AstConst* nodep); void emitSetVarConstant(const string& assignString, AstConst* constp); void emitVarReset(AstVar* varp); string emitVarResetRecurse(const AstVar* varp, const string& varNameProtected,