diff --git a/docs/guide/simulating.rst b/docs/guide/simulating.rst index 5758af4d3..1abd93a11 100644 --- a/docs/guide/simulating.rst +++ b/docs/guide/simulating.rst @@ -166,11 +166,6 @@ Unfortunately, using the optimizer with SystemC files can result in compilation taking several minutes. (The SystemC libraries have many little inlined functions that drive the compiler nuts.) -If using your own makefiles, you may want to compile the Verilated -code with ``--MAKEFLAGS -DVL_INLINE_OPT=inline``. This will inline -functions; however, this requires that all cpp files be compiled in a single -compiler run. - You may uncover further tuning possibilities by profiling the Verilog code. See :ref:`profiling`. diff --git a/include/verilatedos.h b/include/verilatedos.h index 0a1df2035..2049eb0cf 100644 --- a/include/verilatedos.h +++ b/include/verilatedos.h @@ -312,8 +312,10 @@ //========================================================================= // Optimization -#ifndef VL_INLINE_OPT -# define VL_INLINE_OPT ///< "inline" if compiling all objects in single compiler run +#ifndef VL_NO_LEGACY +# ifndef VL_INLINE_OPT +# define VL_INLINE_OPT // Historical, has no effect on Verilated models. +# endif #endif //========================================================================= diff --git a/src/V3AstNodeOther.h b/src/V3AstNodeOther.h index 252983cdb..6aeef4f1f 100644 --- a/src/V3AstNodeOther.h +++ b/src/V3AstNodeOther.h @@ -534,7 +534,6 @@ class AstCFunc final : public AstNode { // an explicitly passed 'self' pointer as the first argument. This can // be slightly faster due to __restrict, and we do not declare in header // so adding/removing loose functions doesn't recompile everything. - bool m_isInline : 1; // Inline function bool m_isVirtual : 1; // Virtual function bool m_entryPoint : 1; // User may call into this top level function bool m_dpiPure : 1; // Pure DPI function @@ -564,7 +563,6 @@ public: m_isDestructor = false; m_isMethod = true; m_isLoose = false; - m_isInline = false; m_isVirtual = false; m_needProcess = false; m_entryPoint = false; @@ -606,7 +604,6 @@ public: void rtnType(const string& rtnType) { m_rtnType = rtnType; } bool dontCombine() const { return m_dontCombine || isTrace() || entryPoint(); } void dontCombine(bool flag) { m_dontCombine = flag; } - bool dontInline() const { return dontCombine() || slow() || funcPublic(); } bool declPrivate() const { return m_declPrivate; } void declPrivate(bool flag) { m_declPrivate = flag; } bool keepIfEmpty() const VL_MT_SAFE { return m_keepIfEmpty; } @@ -628,8 +625,6 @@ public: bool isLoose() const { return m_isLoose; } void isLoose(bool flag) { m_isLoose = flag; } bool isProperMethod() const { return isMethod() && !isLoose(); } - bool isInline() const { return m_isInline; } - void isInline(bool flag) { m_isInline = flag; } bool isVirtual() const { return m_isVirtual; } void isVirtual(bool flag) { m_isVirtual = flag; } bool needProcess() const { return m_needProcess; } diff --git a/src/V3Branch.cpp b/src/V3Branch.cpp index aa6966f96..5cbc7e7ca 100644 --- a/src/V3Branch.cpp +++ b/src/V3Branch.cpp @@ -56,11 +56,6 @@ class BranchVisitor final : public VNVisitorConst { } // else leave unknown } - void visit(AstCFunc* nodep) override { - if (!nodep->dontInline()) nodep->isInline(true); - iterateChildrenConst(nodep); - } - void visit(AstNode* nodep) override { if (nodep->isUnlikely()) { UINFO(4, " UNLIKELY: " << nodep); diff --git a/src/V3EmitCFunc.h b/src/V3EmitCFunc.h index e83e30127..2ed257146 100644 --- a/src/V3EmitCFunc.h +++ b/src/V3EmitCFunc.h @@ -334,7 +334,6 @@ public: puts("\n"); m_lazyDecls.emit(nodep); if (nodep->ifdef() != "") putns(nodep, "#ifdef " + nodep->ifdef() + "\n"); - if (nodep->isInline()) putns(nodep, "VL_INLINE_OPT "); emitCFuncHeader(nodep, m_modp, /* withScope: */ true); if (nodep->isConstructor()) {