diff options
Diffstat (limited to 'src/passes/pass.cpp')
-rw-r--r-- | src/passes/pass.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp index 7790c3972..0d9bd62e5 100644 --- a/src/passes/pass.cpp +++ b/src/passes/pass.cpp @@ -149,6 +149,8 @@ void PassRegistry::registerPasses() { registerPass( "generate-stack-ir", "generate Stack IR", createGenerateStackIRPass); registerPass( + "heap2local", "replace GC allocations with locals", createHeap2LocalPass); + registerPass( "inline-main", "inline __original_main into main", createInlineMainPass); registerPass("inlining", "inline functions (you probably want inlining-optimizing)", @@ -434,6 +436,9 @@ void PassRunner::addDefaultFunctionOptimizationPasses() { addIfNoDWARFIssues("reorder-locals"); // simplify-locals opens opportunities for optimizations addIfNoDWARFIssues("remove-unused-brs"); + if (options.optimizeLevel > 1 && wasm->features.hasGC()) { + addIfNoDWARFIssues("heap2local"); + } // if we are willing to work hard, also optimize copies before coalescing if (options.optimizeLevel >= 3 || options.shrinkLevel >= 2) { addIfNoDWARFIssues("merge-locals"); // very slow on e.g. sqlite |