summaryrefslogtreecommitdiff
path: root/src/passes/pass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/passes/pass.cpp')
-rw-r--r--src/passes/pass.cpp5
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