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.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp
index fd31dada8..3b0faa6c3 100644
--- a/src/passes/pass.cpp
+++ b/src/passes/pass.cpp
@@ -524,7 +524,12 @@ void PassRunner::addDefaultGlobalOptimizationPrePasses() {
}
if (wasm->features.hasGC() && getTypeSystem() == TypeSystem::Nominal &&
options.optimizeLevel >= 2) {
- // TODO: investigate enabling --gto and --remove-module-elements before cfp
+ // Global type optimization can remove fields that are not needed, which can
+ // remove ref.funcs that were once assigned to vtables but are no longer
+ // needed, which can allow more code to be removed globally. After those,
+ // constant field propagation can be more effective.
+ addIfNoDWARFIssues("gto");
+ addIfNoDWARFIssues("remove-unused-module-elements");
addIfNoDWARFIssues("cfp");
}
}