From 982c7fb058dfd831ec1c40c155195aa1bfa74a69 Mon Sep 17 00:00:00 2001 From: Geza Lore Date: Fri, 17 Oct 2025 02:34:09 +0200 Subject: [PATCH] Remove obsolete DepSet from output file names (#6564) --- docs/guide/files.rst | 6 - src/V3EmitCImp.cpp | 225 ++++----------------- test_regress/t/t_c_this.py | 3 +- test_regress/t/t_flag_comp_limit_parens.py | 2 +- test_regress/t/t_flag_xinitial_unique.py | 2 +- test_regress/t/t_json_only_debugcheck.out | 54 +++-- test_regress/t/t_sys_rand_concat.py | 3 +- test_regress/t/t_xml_debugcheck.out | 8 +- 8 files changed, 72 insertions(+), 231 deletions(-) diff --git a/docs/guide/files.rst b/docs/guide/files.rst index 85e46c3e5..47e82a1a8 100644 --- a/docs/guide/files.rst +++ b/docs/guide/files.rst @@ -58,12 +58,8 @@ For --cc/--sc, it creates: - Top-level internal C++ file (from SystemVerilog $root) * - *{prefix}*\ ___024root\ *{__n}*\ .cpp - Additional top-level internal C++ files - * - *{prefix}*\ ___024root\ *{__DepSet_hash__n}*\ .cpp - - Additional top-level internal C++ files (hashed to reduce build times) * - *{prefix}*\ ___024root__Slow\ *{__n}*\ .cpp - Infrequent cold routines - * - *{prefix}*\ ___024root\ *{__DepSet_hash__n}*\ .cpp - - Infrequent cold routines (hashed to reduce build times) * - *{prefix}*\ ___024root__Trace\ *{__n}*\ .cpp - Wave file generation code (from --trace-\*) * - *{prefix}*\ ___024root__Trace__Slow\ *{__n}*\ .cpp @@ -86,8 +82,6 @@ For --cc/--sc, it creates: - Lower level internal C++ files * - *{prefix}{each_verilog_module}{__n}*\ .cpp - Additional lower C++ files - * - *{prefix}{each_verilog_module}{__DepSet_hash__n}*\ .cpp - - Additional lower C++ files (hashed to reduce build times) For --hierarchical mode, it creates: diff --git a/src/V3EmitCImp.cpp b/src/V3EmitCImp.cpp index b93d5e82f..7edf35d0b 100644 --- a/src/V3EmitCImp.cpp +++ b/src/V3EmitCImp.cpp @@ -27,128 +27,6 @@ VL_DEFINE_DEBUG_FUNCTIONS; -//###################################################################### -// Visitor that gathers the headers required by an AstCFunc - -class EmitCGatherDependencies final : VNVisitorConst { - // Ordered set, as it is used as a key in another map. - std::set m_dependencies; // Header names to be included in output C++ file - - // METHODS - void addSymsDependency() { m_dependencies.insert(EmitCUtil::symClassName()); } - void addModDependency(const AstNodeModule* modp) { - if (const AstClass* const classp = VN_CAST(modp, Class)) { - m_dependencies.insert(EmitCUtil::prefixNameProtect(classp->classOrPackagep())); - } else { - m_dependencies.insert(EmitCUtil::prefixNameProtect(modp)); - } - } - void addDTypeDependency(const AstNodeDType* nodep) { - if (const AstClassRefDType* const dtypep = VN_CAST(nodep, ClassRefDType)) { - m_dependencies.insert( - EmitCUtil::prefixNameProtect(dtypep->classp()->classOrPackagep())); - } else if (const AstNodeUOrStructDType* const dtypep - = VN_CAST(nodep, NodeUOrStructDType)) { - if (!dtypep->packed()) { - UASSERT_OBJ(dtypep->classOrPackagep(), nodep, "Unlinked struct package"); - m_dependencies.insert(EmitCUtil::prefixNameProtect(dtypep->classOrPackagep())); - } - } - } - void addSelfDependency(VSelfPointerText selfPointer, AstNode* nodep) { - if (selfPointer.isEmpty()) { - // No self pointer (e.g.: function locals, const pool values, loose static methods), - // so no dependency - } else if (selfPointer.hasThis()) { - // Dereferencing 'this', we need the definition of this module, which is also the - // module that contains the variable. - addModDependency(EmitCParentModule::get(nodep)); - } else { - // Must be an absolute reference - UASSERT_OBJ(selfPointer.isVlSym(), nodep, - "Unknown self pointer: '" << selfPointer.asString() << "'"); - // Dereferencing vlSymsp, so we need it's definition... - addSymsDependency(); - } - } - - // VISITORS - void visit(AstCCall* nodep) override { - addSelfDependency(nodep->selfPointer(), nodep->funcp()); - iterateChildrenConst(nodep); - } - void visit(AstCNew* nodep) override { - addSymsDependency(); - addDTypeDependency(nodep->dtypep()); - iterateChildrenConst(nodep); - } - void visit(AstCMethodCall* nodep) override { - addDTypeDependency(nodep->fromp()->dtypep()); - iterateChildrenConst(nodep); - } - void visit(AstNewCopy* nodep) override { - addSymsDependency(); - addDTypeDependency(nodep->dtypep()); - iterateChildrenConst(nodep); - } - void visit(AstMemberSel* nodep) override { - addDTypeDependency(nodep->fromp()->dtypep()); - iterateChildrenConst(nodep); - } - void visit(AstStructSel* nodep) override { - addDTypeDependency(nodep->fromp()->dtypep()); - iterateChildrenConst(nodep); - } - void visit(AstNodeVarRef* nodep) override { - addSelfDependency(nodep->selfPointer(), nodep->varp()); - iterateChildrenConst(nodep); - } - void visit(AstNodeCoverDecl* nodep) override { - addSymsDependency(); - iterateChildrenConst(nodep); - } - void visit(AstCoverInc* nodep) override { - addSymsDependency(); - iterateChildrenConst(nodep); - } - void visit(AstDumpCtl* nodep) override { - addSymsDependency(); - iterateChildrenConst(nodep); - } - void visit(AstScopeName* nodep) override { - addSymsDependency(); - iterateChildrenConst(nodep); - } - void visit(AstPrintTimeScale* nodep) override { - addSymsDependency(); - iterateChildrenConst(nodep); - } - void visit(AstTimeFormat* nodep) override { - addSymsDependency(); - iterateChildrenConst(nodep); - } - void visit(AstNodeSimpleText* nodep) override { - if (nodep->text().find("vlSymsp") != string::npos) addSymsDependency(); - iterateChildrenConst(nodep); - } - void visit(AstNode* nodep) override { iterateChildrenConst(nodep); } - - // CONSTRUCTOR - explicit EmitCGatherDependencies(AstCFunc* cfuncp) { - // Strictly speaking, for loose methods, we could get away with just a forward - // declaration of the receiver class, but their body very likely includes at least one - // relative reference, so we are probably not loosing much. - addModDependency(EmitCParentModule::get(cfuncp)); - iterateConst(cfuncp); - } - -public: - static const std::set gather(AstCFunc* cfuncp) VL_MT_STABLE { - const EmitCGatherDependencies visitor{cfuncp}; - return std::move(visitor.m_dependencies); - } -}; - //###################################################################### // Internal EmitC implementation @@ -156,49 +34,41 @@ class EmitCImp final : EmitCFunc { // MEMBERS const AstNodeModule* const m_fileModp; // Files names/headers constructed using this module const bool m_slow; // Creating __Slow file - const std::set* m_requiredHeadersp; // Header files required by output file - std::string m_subFileName; // substring added to output filenames - V3UniqueNames m_uniqueNames; // For generating unique file names + size_t m_nSplitFiles = 0; // Sequence number for file splitting std::deque& m_cfilesr; // cfiles generated by this emit // METHODS - void openNextOutputFile(const std::set& headers, const string& subFileName) { + void openNextOutputFile(bool canBeSplit) { UASSERT(!ofp(), "Output file already open"); splitSizeReset(); // Reset file size tracking m_lazyDecls.reset(); // Need to emit new lazy declarations + AstCFile* filep = nullptr; + V3OutCFile* ofilep = nullptr; if (v3Global.opt.lintOnly()) { // Unfortunately we have some lint checks here, so we can't just skip processing. // We should move them to a different stage. - const string filename = VL_DEV_NULL; - AstCFile* const filep = createCFile(filename, /* slow: */ m_slow, /* source: */ true); - m_cfilesr.push_back(filep); - V3OutCFile* const ofilep = new V3OutCFile{filename}; - setOutputFile(ofilep, filep); + const std::string filename = VL_DEV_NULL; + filep = createCFile(filename, /* slow: */ m_slow, /* source: */ true); + ofilep = new V3OutCFile{filename}; } else { - string filename - = v3Global.opt.makeDir() + "/" + EmitCUtil::prefixNameProtect(m_fileModp); - if (!subFileName.empty()) { - filename += "__" + subFileName; - filename = m_uniqueNames.get(filename); - } + std::string filename = v3Global.opt.makeDir(); + filename += "/" + EmitCUtil::prefixNameProtect(m_fileModp); + if (canBeSplit) filename += "__" + std::to_string(m_nSplitFiles++); if (m_slow) filename += "__Slow"; filename += ".cpp"; - AstCFile* const filep = createCFile(filename, /* slow: */ m_slow, /* source: */ true); - m_cfilesr.push_back(filep); - V3OutCFile* const ofilep - = v3Global.opt.systemC() ? new V3OutScFile{filename} : new V3OutCFile{filename}; - setOutputFile(ofilep, filep); + filep = createCFile(filename, /* slow: */ m_slow, /* source: */ true); + ofilep = v3Global.opt.systemC() ? new V3OutScFile{filename} : new V3OutCFile{filename}; } + m_cfilesr.push_back(filep); + setOutputFile(ofilep, filep); putsHeader(); puts("// DESCRIPTION: Verilator output: Design implementation internals\n"); puts("// See " + EmitCUtil::topClassName() + ".h for the primary calling header\n"); - puts("\n"); puts("#include \"" + EmitCUtil::pchClassName() + ".h\"\n"); - for (const string& name : headers) puts("#include \"" + name + ".h\"\n"); emitSystemCSection(m_modp, VSystemCSectionType::IMP_HDR); } @@ -305,7 +175,6 @@ class EmitCImp final : EmitCFunc { puts(modName + "__" + protect("_configure_coverage") + "(this, first);\n"); } puts("}\n"); - splitSizeInc(10); } void emitCoverageImp() { // Rather than putting out VL_COVER_INSERT calls directly, we do it via this @@ -341,7 +210,6 @@ class EmitCImp final : EmitCFunc { puts(" \"comment\",commentp,"); puts(" (linescovp[0] ? \"linescov\" : \"\"), linescovp);\n"); puts("}\n"); - splitSizeInc(10); } if (v3Global.opt.coverageToggle()) { puts("\n// Toggle Coverage\n"); @@ -386,7 +254,6 @@ class EmitCImp final : EmitCFunc { puts("}\n"); puts("}\n"); puts("}\n"); - splitSizeInc(10); } } void emitDestructorImp(const AstNodeModule* modp) { @@ -395,7 +262,6 @@ class EmitCImp final : EmitCFunc { + "() {\n"); emitSystemCSection(modp, VSystemCSectionType::DTOR); puts("}\n"); - splitSizeInc(10); } void emitSavableImp(const AstNodeModule* modp) { if (v3Global.opt.savable()) { @@ -519,11 +385,7 @@ class EmitCImp final : EmitCFunc { = VN_IS(modp, ClassPackage) ? VN_AS(modp, ClassPackage)->classp() : nullptr; if (hasCommonImp(modp) || hasCommonImp(classp)) { - std::set headers; - headers.insert(EmitCUtil::prefixNameProtect(m_fileModp)); - headers.insert(EmitCUtil::symClassName()); - - openNextOutputFile(headers, ""); + openNextOutputFile(/* canBeSplit: */ false); doCommonImp(modp); if (classp) { @@ -536,22 +398,19 @@ class EmitCImp final : EmitCFunc { } } void emitCFuncImp(const AstNodeModule* modp) { - // Partition functions based on which module definitions they require, by building a - // map from "AstNodeModules whose definitions are required" -> "functions that need - // them" - std::map, std::vector> depSet2funcps; + // Functions to be emitted here + std::vector funcps; - const auto gather = [this, &depSet2funcps](const AstNodeModule* modp) { + const auto gather = [this, &funcps](const AstNodeModule* modp) { for (AstNode* nodep = modp->stmtsp(); nodep; nodep = nodep->nextp()) { - if (AstCFunc* const funcp = VN_CAST(nodep, CFunc)) { - // TRACE_* and DPI handled elsewhere - if (funcp->isTrace()) continue; - if (funcp->dpiImportPrototype()) continue; - if (funcp->dpiExportDispatcher()) continue; - if (funcp->slow() != m_slow) continue; - const auto& depSet = EmitCGatherDependencies::gather(funcp); - depSet2funcps[depSet].push_back(funcp); - } + AstCFunc* const funcp = VN_CAST(nodep, CFunc); + if (!funcp) continue; + // TRACE_* and DPI handled elsewhere + if (funcp->isTrace()) continue; + if (funcp->dpiImportPrototype()) continue; + if (funcp->dpiExportDispatcher()) continue; + if (funcp->slow() != m_slow) continue; + funcps.push_back(funcp); } }; @@ -562,25 +421,19 @@ class EmitCImp final : EmitCFunc { gather(packagep->classp()); } - // Emit all functions in each dependency set into separate files - for (const auto& pair : depSet2funcps) { - m_requiredHeadersp = &pair.first; - // Compute the hash of the dependencies, so we can add it to the filenames to - // disambiguate them - V3Hash hash; - for (const string& name : *m_requiredHeadersp) hash += name; - m_subFileName = "DepSet_" + hash.toString(); - // Open output file - openNextOutputFile(*m_requiredHeadersp, m_subFileName); - // Emit functions in this dependency set - for (AstCFunc* const funcp : pair.second) { - VL_RESTORER(m_modp); - m_modp = EmitCParentModule::get(funcp); - iterateConst(funcp); - } - // Close output file - closeOutputFile(); + // Do not create empty files + if (funcps.empty()) return; + + // Open output file + openNextOutputFile(/* canBeSplit: */ true); + // Emit all functions + for (AstCFunc* const funcp : funcps) { + VL_RESTORER(m_modp); + m_modp = EmitCParentModule::get(funcp); + iterateConst(funcp); } + // Close output file + closeOutputFile(); } // VISITORS @@ -591,7 +444,7 @@ class EmitCImp final : EmitCFunc { // Close old file closeOutputFile(); // Open a new file - openNextOutputFile(*m_requiredHeadersp, m_subFileName); + openNextOutputFile(/* canBeSplit: */ true); } EmitCFunc::visit(nodep); diff --git a/test_regress/t/t_c_this.py b/test_regress/t/t_c_this.py index bdbed8811..be55d1566 100755 --- a/test_regress/t/t_c_this.py +++ b/test_regress/t/t_c_this.py @@ -20,8 +20,7 @@ if test.vlt_all: has_xthis = False has_thisx = False has_xthisx = False - for filename in test.glob_some(test.obj_dir + "/" + test.vm_prefix + - "___024root__DepSet_*__0.cpp"): + for filename in test.glob_some(test.obj_dir + "/" + test.vm_prefix + "___024root__0.cpp"): text = test.file_contents(filename) if re.search(r'\bthis->clk\b', text): has_this = True diff --git a/test_regress/t/t_flag_comp_limit_parens.py b/test_regress/t/t_flag_comp_limit_parens.py index fd7df3778..bce8d15bc 100755 --- a/test_regress/t/t_flag_comp_limit_parens.py +++ b/test_regress/t/t_flag_comp_limit_parens.py @@ -15,7 +15,7 @@ test.compile(verilator_flags2=["--comp-limit-parens 2"]) test.execute() -files = test.glob_some(test.obj_dir + "/" + test.vm_prefix + "___024root__DepSet*__Slow.cpp") +files = test.glob_some(test.obj_dir + "/" + test.vm_prefix + "___024root__*__Slow.cpp") test.file_grep_any(files, r'Vdeeptemp') test.passes() diff --git a/test_regress/t/t_flag_xinitial_unique.py b/test_regress/t/t_flag_xinitial_unique.py index 9d4ede6ae..2426f64bf 100755 --- a/test_regress/t/t_flag_xinitial_unique.py +++ b/test_regress/t/t_flag_xinitial_unique.py @@ -15,7 +15,7 @@ test.compile(verilator_flags2=["--x-initial unique"]) test.execute() -files = glob.glob(test.obj_dir + "/" + test.vm_prefix + "___024root__DepSet_*__Slow.cpp") +files = glob.glob(test.obj_dir + "/" + test.vm_prefix + "___024root__*__Slow.cpp") test.file_grep_any(files, r"VL_SCOPED_RAND_RESET") test.passes() diff --git a/test_regress/t/t_json_only_debugcheck.out b/test_regress/t/t_json_only_debugcheck.out index ef179392b..0e4a5cbef 100644 --- a/test_regress/t/t_json_only_debugcheck.out +++ b/test_regress/t/t_json_only_debugcheck.out @@ -2795,65 +2795,63 @@ {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root.h","addr":"(BPB)","loc":"a,0:0,0:0","source":false,"slow":false,"tblockp": []}, {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$unit.h","addr":"(CPB)","loc":"a,0:0,0:0","source":false,"slow":false,"tblockp": []}, {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__Slow.cpp","addr":"(DPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__DepSet_h########__0__Slow.cpp","addr":"(EPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__DepSet_h########__0__Slow.cpp","addr":"(FPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__DepSet_h########__0.cpp","addr":"(GPB)","loc":"a,0:0,0:0","source":true,"slow":false,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__DepSet_h########__0.cpp","addr":"(HPB)","loc":"a,0:0,0:0","source":true,"slow":false,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$unit__Slow.cpp","addr":"(IPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, - {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$unit__DepSet_h########__0__Slow.cpp","addr":"(JPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []} + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__0__Slow.cpp","addr":"(EPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$root__0.cpp","addr":"(FPB)","loc":"a,0:0,0:0","source":true,"slow":false,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$unit__Slow.cpp","addr":"(GPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []}, + {"type":"CFILE","name":"obj_vlt/t_json_only_debugcheck/Vt_json_only_debugcheck_$unit__0__Slow.cpp","addr":"(HPB)","loc":"a,0:0,0:0","source":true,"slow":true,"tblockp": []} ], "miscsp": [ {"type":"TYPETABLE","name":"","addr":"(C)","loc":"a,0:0,0:0","constraintRefp":"UNLINKED","emptyQueuep":"UNLINKED","queueIndexp":"UNLINKED","streamp":"UNLINKED","voidp":"(CB)", "typesp": [ {"type":"BASICDTYPE","name":"logic","addr":"(K)","loc":"d,33:24,33:27","dtypep":"(K)","keyword":"logic","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"logic","addr":"(GC)","loc":"d,53:16,53:17","dtypep":"(GC)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(KPB)","loc":"d,17:17,17:18","dtypep":"(KPB)","keyword":"logic","range":"3:0","generic":true,"rangep": []}, - {"type":"ENUMDTYPE","name":"t.my_t","addr":"(LPB)","loc":"d,17:12,17:16","dtypep":"(LPB)","enum":true,"generic":false,"refDTypep":"(KPB)","childDTypep": [], + {"type":"BASICDTYPE","name":"logic","addr":"(IPB)","loc":"d,17:17,17:18","dtypep":"(IPB)","keyword":"logic","range":"3:0","generic":true,"rangep": []}, + {"type":"ENUMDTYPE","name":"t.my_t","addr":"(JPB)","loc":"d,17:12,17:16","dtypep":"(JPB)","enum":true,"generic":false,"refDTypep":"(IPB)","childDTypep": [], "itemsp": [ - {"type":"ENUMITEM","name":"E01","addr":"(MPB)","loc":"d,18:24,18:27","dtypep":"(TB)","rangep": [], + {"type":"ENUMITEM","name":"E01","addr":"(KPB)","loc":"d,18:24,18:27","dtypep":"(TB)","rangep": [], "valuep": [ - {"type":"CONST","name":"4'h1","addr":"(NPB)","loc":"d,18:30,18:31","dtypep":"(TB)"} + {"type":"CONST","name":"4'h1","addr":"(LPB)","loc":"d,18:30,18:31","dtypep":"(TB)"} ]}, - {"type":"ENUMITEM","name":"E03","addr":"(OPB)","loc":"d,19:24,19:27","dtypep":"(TB)","rangep": [], + {"type":"ENUMITEM","name":"E03","addr":"(MPB)","loc":"d,19:24,19:27","dtypep":"(TB)","rangep": [], "valuep": [ - {"type":"CONST","name":"4'h3","addr":"(PPB)","loc":"d,19:30,19:31","dtypep":"(TB)"} + {"type":"CONST","name":"4'h3","addr":"(NPB)","loc":"d,19:30,19:31","dtypep":"(TB)"} ]}, - {"type":"ENUMITEM","name":"E04","addr":"(QPB)","loc":"d,20:24,20:27","dtypep":"(TB)","rangep": [], + {"type":"ENUMITEM","name":"E04","addr":"(OPB)","loc":"d,20:24,20:27","dtypep":"(TB)","rangep": [], "valuep": [ - {"type":"CONST","name":"4'h4","addr":"(RPB)","loc":"d,20:30,20:31","dtypep":"(TB)"} + {"type":"CONST","name":"4'h4","addr":"(PPB)","loc":"d,20:30,20:31","dtypep":"(TB)"} ]} ]}, {"type":"BASICDTYPE","name":"integer","addr":"(R)","loc":"d,23:4,23:11","dtypep":"(R)","keyword":"integer","range":"31:0","generic":true,"rangep": []}, - {"type":"REFDTYPE","name":"my_t","addr":"(M)","loc":"d,24:4,24:8","dtypep":"(LPB)","generic":false,"typedefp":"UNLINKED","refDTypep":"(LPB)","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []}, + {"type":"REFDTYPE","name":"my_t","addr":"(M)","loc":"d,24:4,24:8","dtypep":"(JPB)","generic":false,"typedefp":"UNLINKED","refDTypep":"(JPB)","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []}, {"type":"BASICDTYPE","name":"string","addr":"(RB)","loc":"d,28:4,28:10","dtypep":"(RB)","keyword":"string","generic":true,"rangep": []}, - {"type":"UNPACKARRAYDTYPE","name":"","addr":"(BC)","loc":"d,17:12,17:16","dtypep":"(BC)","isCompound":false,"declRange":"[7:0]","generic":false,"refDTypep":"(LPB)","childDTypep": [], + {"type":"UNPACKARRAYDTYPE","name":"","addr":"(BC)","loc":"d,17:12,17:16","dtypep":"(BC)","isCompound":false,"declRange":"[7:0]","generic":false,"refDTypep":"(JPB)","childDTypep": [], "rangep": [ - {"type":"RANGE","name":"","addr":"(SPB)","loc":"d,17:12,17:16","ascending":false,"fromBracket":false, + {"type":"RANGE","name":"","addr":"(QPB)","loc":"d,17:12,17:16","ascending":false,"fromBracket":false, "leftp": [ - {"type":"CONST","name":"32'h7","addr":"(TPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} + {"type":"CONST","name":"32'h7","addr":"(RPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} ], "rightp": [ - {"type":"CONST","name":"32'h0","addr":"(UPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} + {"type":"CONST","name":"32'h0","addr":"(SPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} ]} ]}, - {"type":"UNPACKARRAYDTYPE","name":"","addr":"(VI)","loc":"d,17:12,17:16","dtypep":"(VI)","isCompound":false,"declRange":"[7:0]","generic":false,"refDTypep":"(LPB)","childDTypep": [], + {"type":"UNPACKARRAYDTYPE","name":"","addr":"(VI)","loc":"d,17:12,17:16","dtypep":"(VI)","isCompound":false,"declRange":"[7:0]","generic":false,"refDTypep":"(JPB)","childDTypep": [], "rangep": [ - {"type":"RANGE","name":"","addr":"(VPB)","loc":"d,17:12,17:16","ascending":false,"fromBracket":false, + {"type":"RANGE","name":"","addr":"(TPB)","loc":"d,17:12,17:16","ascending":false,"fromBracket":false, "leftp": [ - {"type":"CONST","name":"32'h7","addr":"(WPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} + {"type":"CONST","name":"32'h7","addr":"(UPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} ], "rightp": [ - {"type":"CONST","name":"32'h0","addr":"(XPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} + {"type":"CONST","name":"32'h0","addr":"(VPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} ]} ]}, {"type":"UNPACKARRAYDTYPE","name":"","addr":"(HM)","loc":"d,17:12,17:16","dtypep":"(HM)","isCompound":true,"declRange":"[7:0]","generic":false,"refDTypep":"(RB)","childDTypep": [], "rangep": [ - {"type":"RANGE","name":"","addr":"(YPB)","loc":"d,17:12,17:16","ascending":false,"fromBracket":false, + {"type":"RANGE","name":"","addr":"(WPB)","loc":"d,17:12,17:16","ascending":false,"fromBracket":false, "leftp": [ - {"type":"CONST","name":"32'h7","addr":"(ZPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} + {"type":"CONST","name":"32'h7","addr":"(XPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} ], "rightp": [ - {"type":"CONST","name":"32'h0","addr":"(AQB)","loc":"d,17:12,17:16","dtypep":"(GC)"} + {"type":"CONST","name":"32'h0","addr":"(YPB)","loc":"d,17:12,17:16","dtypep":"(GC)"} ]} ]}, {"type":"BASICDTYPE","name":"logic","addr":"(KB)","loc":"d,23:23,23:24","dtypep":"(KB)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, @@ -2870,9 +2868,9 @@ ]}, {"type":"CONSTPOOL","name":"","addr":"(D)","loc":"a,0:0,0:0", "modulep": [ - {"type":"MODULE","name":"@CONST-POOL@","addr":"(BQB)","loc":"a,0:0,0:0","isChecker":false,"isProgram":false,"hasGenericIface":false,"origName":"@CONST-POOL@","level":0,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","inlinesp": [], + {"type":"MODULE","name":"@CONST-POOL@","addr":"(ZPB)","loc":"a,0:0,0:0","isChecker":false,"isProgram":false,"hasGenericIface":false,"origName":"@CONST-POOL@","level":0,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","inlinesp": [], "stmtsp": [ - {"type":"SCOPE","name":"TOP","addr":"(CQB)","loc":"a,0:0,0:0","aboveScopep":"UNLINKED","aboveCellp":"UNLINKED","modp":"(BQB)","varsp": [],"blocksp": [],"inlinesp": []} + {"type":"SCOPE","name":"TOP","addr":"(AQB)","loc":"a,0:0,0:0","aboveScopep":"UNLINKED","aboveCellp":"UNLINKED","modp":"(ZPB)","varsp": [],"blocksp": [],"inlinesp": []} ]} ]} ]} diff --git a/test_regress/t/t_sys_rand_concat.py b/test_regress/t/t_sys_rand_concat.py index 48dfd22b5..aa46be6bb 100755 --- a/test_regress/t/t_sys_rand_concat.py +++ b/test_regress/t/t_sys_rand_concat.py @@ -15,8 +15,7 @@ test.compile() test.execute() -for filename in test.glob_some(test.obj_dir + "/" + test.vm_prefix + - "___024root__DepSet*__Slow.cpp"): +for filename in test.glob_some(test.obj_dir + "/" + test.vm_prefix + "___024root__*__Slow.cpp"): test.file_grep_not(filename, r'(<<|>>)') test.passes() diff --git a/test_regress/t/t_xml_debugcheck.out b/test_regress/t/t_xml_debugcheck.out index 7222baf6a..f55c97517 100644 --- a/test_regress/t/t_xml_debugcheck.out +++ b/test_regress/t/t_xml_debugcheck.out @@ -1708,12 +1708,10 @@ - - - - + + - +