diff --git a/src/V3Options.cpp b/src/V3Options.cpp index eebc028be..714e104b6 100644 --- a/src/V3Options.cpp +++ b/src/V3Options.cpp @@ -824,86 +824,167 @@ void V3Options::parseOptsList(FileLine* fl, const string& optdir, int argc, char if (sw[0] == '-' && sw[1] == '-') ++sw; bool hadSwitchPart1 = true; // Single switches - // clang-format off - if (!strcmp(sw, "-E")) { m_preprocOnly = true; } - else if ( onoffb(sw, "-MMD", bflag/*ref*/)) { m_makeDepend = bflag; } - else if ( onoff (sw, "-MP", flag/*ref*/)) { m_makePhony = flag; } - else if (!strcmp(sw, "-P")) { m_preprocNoLine = true; } - else if ( onoff (sw, "-assert", flag/*ref*/)) { m_assert = flag; } - else if ( onoff (sw, "-autoflush", flag/*ref*/)) { m_autoflush = flag; } - else if ( onoff (sw, "-bbox-sys", flag/*ref*/)) { m_bboxSys = flag; } - else if ( onoff (sw, "-bbox-unsup", flag/*ref*/)) { m_bboxUnsup = flag; } - else if (!strcmp(sw, "-build")) { m_build = true; } - else if (!strcmp(sw, "-cc")) { m_outFormatOk = true; m_systemC = false; } - else if ( onoff (sw, "-cdc", flag/*ref*/)) { m_cdc = flag; } - else if ( onoff (sw, "-coverage", flag/*ref*/)) { coverage(flag); } - else if ( onoff (sw, "-coverage-line", flag/*ref*/)){ m_coverageLine = flag; } - else if ( onoff (sw, "-coverage-toggle", flag/*ref*/)){ m_coverageToggle = flag; } - else if ( onoff (sw, "-coverage-underscore", flag/*ref*/)){ m_coverageUnderscore = flag; } - else if ( onoff (sw, "-coverage-user", flag/*ref*/)){ m_coverageUser = flag; } - else if ( onoff (sw, "-covsp", flag/*ref*/)) { } // TBD - else if (!strcmp(sw, "-debug-abort")) { V3Error::vlAbort(); } // Undocumented, see also --debug-sigsegv - else if ( onoff (sw, "-debug-check", flag/*ref*/)) { m_debugCheck = flag; } - else if ( onoff (sw, "-debug-collision", flag/*ref*/)) { m_debugCollision = flag; } // Undocumented - else if ( onoff (sw, "-debug-exit-parse", flag/*ref*/)) { m_debugExitParse = flag; } // Undocumented - else if ( onoff (sw, "-debug-leak", flag/*ref*/)) { m_debugLeak = flag; } - else if ( onoff (sw, "-debug-nondeterminism", flag/*ref*/)){ m_debugNondeterminism = flag; } - else if ( onoff (sw, "-debug-partition", flag/*ref*/)){ m_debugPartition = flag; } // Undocumented - else if ( onoff (sw, "-debug-protect", flag/*ref*/)){ m_debugProtect = flag; } // Undocumented - else if ( onoff (sw, "-debug-self-test", flag/*ref*/)){ m_debugSelfTest = flag; } // Undocumented - else if (!strcmp(sw, "-debug-sigsegv")) { throwSigsegv(); } // Undocumented, see also --debug-abort - else if (!strcmp(sw, "-debug-fatalsrc")) { v3fatalSrc("--debug-fatal-src"); } // Undocumented, see also --debug-abort - else if ( onoff (sw, "-decoration", flag/*ref*/)) { m_decoration = flag; } - else if ( onoff (sw, "-dpi-hdr-only", flag/*ref*/)) { m_dpiHdrOnly = flag; } - else if ( onoff (sw, "-dump-defines", flag/*ref*/)) { m_dumpDefines = flag; } - else if ( onoff (sw, "-dump-tree", flag/*ref*/)) { m_dumpTree = flag ? 3 : 0; } // Also see --dump-treei - else if ( onoff (sw, "-dump-tree-addrids", flag/*ref*/)){ m_dumpTreeAddrids = flag; } - else if ( onoff (sw, "-exe", flag/*ref*/)) { m_exe = flag; } - else if ( onoff (sw, "-flatten", flag/*ref*/)) { m_flatten = flag; } - else if ( onoff (sw, "-ignc", flag/*ref*/)) { m_ignc = flag; } - else if ( onoff (sw, "-inhibit-sim", flag/*ref*/)) { m_inhibitSim = flag; } - else if ( onoff (sw, "-lint-only", flag/*ref*/)) { m_lintOnly = flag; } - else if ( onoff (sw, "-main", flag/*ref*/)) { m_main = flag; } // Undocumented future - else if (!strcmp(sw, "-no-pins64")) { m_pinsBv = 33; } - else if ( onoff (sw, "-order-clock-delay", flag/*ref*/)) { m_orderClockDly = flag; } - else if (!strcmp(sw, "-pins64")) { m_pinsBv = 65; } - else if ( onoff (sw, "-pins-sc-uint", flag/*ref*/)) { m_pinsScUint = flag; if (!m_pinsScBigUint) m_pinsBv = 65; } - else if ( onoff (sw, "-pins-sc-biguint", flag/*ref*/)){ m_pinsScBigUint = flag; m_pinsBv = 513; } - else if ( onoff (sw, "-pins-uint8", flag/*ref*/)) { m_pinsUint8 = flag; } - else if ( onoff (sw, "-pp-comments", flag/*ref*/)) { m_ppComments = flag; } - else if (!strcmp(sw, "-private")) { m_public = false; } - else if ( onoff (sw, "-prof-cfuncs", flag/*ref*/)) { m_profCFuncs = flag; } - else if ( onoff (sw, "-profile-cfuncs", flag/*ref*/)) { m_profCFuncs = flag; } // Undocumented, for backward compat - else if ( onoff (sw, "-prof-threads", flag/*ref*/)) { m_profThreads = flag; } - else if ( onoff (sw, "-protect-ids", flag/*ref*/)) { m_protectIds = flag; } - else if ( onoff (sw, "-public", flag/*ref*/)) { m_public = flag; } - else if ( onoff (sw, "-public-flat-rw", flag/*ref*/) ) { m_publicFlatRW = flag; v3Global.dpi(true); } - else if (!strncmp(sw, "-pvalue+", strlen("-pvalue+"))) { addParameter(string(sw+strlen("-pvalue+")), false); } - else if ( onoff (sw, "-quiet-exit", flag/*ref*/)) { m_quietExit = flag; } - else if ( onoff (sw, "-relative-cfuncs", flag/*ref*/)) { m_relativeCFuncs = flag; } - else if ( onoff (sw, "-relative-includes", flag/*ref*/)) { m_relativeIncludes = flag; } - else if ( onoff (sw, "-report-unoptflat", flag/*ref*/)) { m_reportUnoptflat = flag; } - else if ( onoff (sw, "-savable", flag/*ref*/)) { m_savable = flag; } - else if (!strcmp(sw, "-sc")) { m_outFormatOk = true; m_systemC = true; } - else if ( onoffb(sw, "-skip-identical", bflag/*ref*/)) { m_skipIdentical = bflag; } - else if ( onoff (sw, "-stats", flag/*ref*/)) { m_stats = flag; } - else if ( onoff (sw, "-stats-vars", flag/*ref*/)) { m_statsVars = flag; m_stats |= flag; } - else if ( onoff (sw, "-structs-unpacked", flag/*ref*/)) { m_structsPacked = flag; } - else if (!strcmp(sw, "-sv")) { m_defaultLanguage = V3LangCode::L1800_2005; } - else if ( onoff (sw, "-threads-coarsen", flag/*ref*/)) { m_threadsCoarsen = flag; } // Undocumented, debug - else if ( onoff (sw, "-trace", flag/*ref*/)) { m_trace = flag; } - else if ( onoff (sw, "-trace-coverage", flag/*ref*/)) { m_traceCoverage = flag; } - else if ( onoff (sw, "-trace-params", flag/*ref*/)) { m_traceParams = flag; } - else if ( onoff (sw, "-trace-structs", flag/*ref*/)) { m_traceStructs = flag; } - else if ( onoff (sw, "-trace-underscore", flag/*ref*/)) { m_traceUnderscore = flag; } - else if ( onoff (sw, "-underline-zero", flag/*ref*/)) { m_underlineZero = flag; } // Undocumented, old Verilator-2 - else if ( onoff (sw, "-verilate", flag/*ref*/)) { m_verilate = flag; } - else if ( onoff (sw, "-vpi", flag/*ref*/)) { m_vpi = flag; } - else if ( onoff (sw, "-Wpedantic", flag/*ref*/)) { m_pedantic = flag; } - else if ( onoff (sw, "-x-initial-edge", flag/*ref*/)) { m_xInitialEdge = flag; } - else if ( onoff (sw, "-xml-only", flag/*ref*/)) { m_xmlOnly = flag; } - else { hadSwitchPart1 = false; } - // clang-format on + if (!strcmp(sw, "-E")) { + m_preprocOnly = true; + } else if (onoffb(sw, "-MMD", bflag /*ref*/)) { + m_makeDepend = bflag; + } else if (onoff(sw, "-MP", flag /*ref*/)) { + m_makePhony = flag; + } else if (!strcmp(sw, "-P")) { + m_preprocNoLine = true; + } else if (onoff(sw, "-assert", flag /*ref*/)) { + m_assert = flag; + } else if (onoff(sw, "-autoflush", flag /*ref*/)) { + m_autoflush = flag; + } else if (onoff(sw, "-bbox-sys", flag /*ref*/)) { + m_bboxSys = flag; + } else if (onoff(sw, "-bbox-unsup", flag /*ref*/)) { + m_bboxUnsup = flag; + } else if (!strcmp(sw, "-build")) { + m_build = true; + } else if (!strcmp(sw, "-cc")) { + m_outFormatOk = true; + m_systemC = false; + } else if (onoff(sw, "-cdc", flag /*ref*/)) { + m_cdc = flag; + } else if (onoff(sw, "-coverage", flag /*ref*/)) { + coverage(flag); + } else if (onoff(sw, "-coverage-line", flag /*ref*/)) { + m_coverageLine = flag; + } else if (onoff(sw, "-coverage-toggle", flag /*ref*/)) { + m_coverageToggle = flag; + } else if (onoff(sw, "-coverage-underscore", flag /*ref*/)) { + m_coverageUnderscore = flag; + } else if (onoff(sw, "-coverage-user", flag /*ref*/)) { + m_coverageUser = flag; + } else if (!strcmp(sw, "-debug-abort")) { // Undocumented, see also --debug-sigsegv + V3Error::vlAbort(); + } else if (onoff(sw, "-debug-check", flag /*ref*/)) { + m_debugCheck = flag; + } else if (onoff(sw, "-debug-collision", flag /*ref*/)) { // Undocumented + m_debugCollision = flag; + } else if (onoff(sw, "-debug-exit-parse", flag /*ref*/)) { // Undocumented + m_debugExitParse = flag; + } else if (onoff(sw, "-debug-leak", flag /*ref*/)) { + m_debugLeak = flag; + } else if (onoff(sw, "-debug-nondeterminism", flag /*ref*/)) { + m_debugNondeterminism = flag; + } else if (onoff(sw, "-debug-partition", flag /*ref*/)) { // Undocumented + m_debugPartition = flag; + } else if (onoff(sw, "-debug-protect", flag /*ref*/)) { // Undocumented + m_debugProtect = flag; + } else if (onoff(sw, "-debug-self-test", flag /*ref*/)) { // Undocumented + m_debugSelfTest = flag; + } else if (!strcmp(sw, "-debug-sigsegv")) { // Undocumented, see also --debug-abort + throwSigsegv(); + } else if (!strcmp(sw, "-debug-fatalsrc")) { // Undocumented, see also --debug-abort + v3fatalSrc("--debug-fatal-src"); + } else if (onoff(sw, "-decoration", flag /*ref*/)) { + m_decoration = flag; + } else if (onoff(sw, "-dpi-hdr-only", flag /*ref*/)) { + m_dpiHdrOnly = flag; + } else if (onoff(sw, "-dump-defines", flag /*ref*/)) { + m_dumpDefines = flag; + } else if (onoff(sw, "-dump-tree", flag /*ref*/)) { // Also see --dump-treei + m_dumpTree = flag ? 3 : 0; + } else if (onoff(sw, "-dump-tree-addrids", flag /*ref*/)) { + m_dumpTreeAddrids = flag; + } else if (onoff(sw, "-exe", flag /*ref*/)) { + m_exe = flag; + } else if (onoff(sw, "-flatten", flag /*ref*/)) { + m_flatten = flag; + } else if (onoff(sw, "-ignc", flag /*ref*/)) { + m_ignc = flag; + } else if (onoff(sw, "-inhibit-sim", flag /*ref*/)) { + m_inhibitSim = flag; + } else if (onoff(sw, "-lint-only", flag /*ref*/)) { + m_lintOnly = flag; + } else if (onoff(sw, "-main", flag /*ref*/)) { // Undocumented future + m_main = flag; + } else if (!strcmp(sw, "-no-pins64")) { + m_pinsBv = 33; + } else if (onoff(sw, "-order-clock-delay", flag /*ref*/)) { + m_orderClockDly = flag; + } else if (!strcmp(sw, "-pins64")) { + m_pinsBv = 65; + } else if (onoff(sw, "-pins-sc-uint", flag /*ref*/)) { + m_pinsScUint = flag; + if (!m_pinsScBigUint) m_pinsBv = 65; + } else if (onoff(sw, "-pins-sc-biguint", flag /*ref*/)) { + m_pinsScBigUint = flag; + m_pinsBv = 513; + } else if (onoff(sw, "-pins-uint8", flag /*ref*/)) { + m_pinsUint8 = flag; + } else if (onoff(sw, "-pp-comments", flag /*ref*/)) { + m_ppComments = flag; + } else if (!strcmp(sw, "-private")) { + m_public = false; + } else if (onoff(sw, "-prof-cfuncs", flag /*ref*/)) { + m_profCFuncs = flag; + } else if (onoff(sw, "-profile-cfuncs", flag /*ref*/)) { // Undocumented, renamed + m_profCFuncs = flag; + } else if (onoff(sw, "-prof-threads", flag /*ref*/)) { + m_profThreads = flag; + } else if (onoff(sw, "-protect-ids", flag /*ref*/)) { + m_protectIds = flag; + } else if (onoff(sw, "-public", flag /*ref*/)) { + m_public = flag; + } else if (onoff(sw, "-public-flat-rw", flag /*ref*/)) { + m_publicFlatRW = flag; + v3Global.dpi(true); + } else if (!strncmp(sw, "-pvalue+", strlen("-pvalue+"))) { + addParameter(string(sw + strlen("-pvalue+")), false); + } else if (onoff(sw, "-quiet-exit", flag /*ref*/)) { + m_quietExit = flag; + } else if (onoff(sw, "-relative-cfuncs", flag /*ref*/)) { + m_relativeCFuncs = flag; + } else if (onoff(sw, "-relative-includes", flag /*ref*/)) { + m_relativeIncludes = flag; + } else if (onoff(sw, "-report-unoptflat", flag /*ref*/)) { + m_reportUnoptflat = flag; + } else if (onoff(sw, "-savable", flag /*ref*/)) { + m_savable = flag; + } else if (!strcmp(sw, "-sc")) { + m_outFormatOk = true; + m_systemC = true; + } else if (onoffb(sw, "-skip-identical", bflag /*ref*/)) { + m_skipIdentical = bflag; + } else if (onoff(sw, "-stats", flag /*ref*/)) { + m_stats = flag; + } else if (onoff(sw, "-stats-vars", flag /*ref*/)) { + m_statsVars = flag; + m_stats |= flag; + } else if (onoff(sw, "-structs-unpacked", flag /*ref*/)) { + m_structsPacked = flag; + } else if (!strcmp(sw, "-sv")) { + m_defaultLanguage = V3LangCode::L1800_2005; + } else if (onoff(sw, "-threads-coarsen", flag /*ref*/)) { // Undocumented, debug + m_threadsCoarsen = flag; + } else if (onoff(sw, "-trace", flag /*ref*/)) { + m_trace = flag; + } else if (onoff(sw, "-trace-coverage", flag /*ref*/)) { + m_traceCoverage = flag; + } else if (onoff(sw, "-trace-params", flag /*ref*/)) { + m_traceParams = flag; + } else if (onoff(sw, "-trace-structs", flag /*ref*/)) { + m_traceStructs = flag; + } else if (onoff(sw, "-trace-underscore", flag /*ref*/)) { + m_traceUnderscore = flag; + } else if (onoff(sw, "-underline-zero", flag /*ref*/)) { // Deprecated + m_underlineZero = flag; + } else if (onoff(sw, "-verilate", flag /*ref*/)) { + m_verilate = flag; + } else if (onoff(sw, "-vpi", flag /*ref*/)) { + m_vpi = flag; + } else if (onoff(sw, "-Wpedantic", flag /*ref*/)) { + m_pedantic = flag; + } else if (onoff(sw, "-x-initial-edge", flag /*ref*/)) { + m_xInitialEdge = flag; + } else if (onoff(sw, "-xml-only", flag /*ref*/)) { + m_xmlOnly = flag; + } else { + hadSwitchPart1 = false; + } if (hadSwitchPart1) { } else if (!strncmp(sw, "-O", 2)) {