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.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp
index 9daf8e1d3..ee4e2ed21 100644
--- a/src/passes/pass.cpp
+++ b/src/passes/pass.cpp
@@ -594,18 +594,24 @@ void PassRunner::addDefaultGlobalOptimizationPrePasses() {
addIfNoDWARFIssues("once-reduction");
}
if (wasm->features.hasGC() && options.optimizeLevel >= 2) {
- addIfNoDWARFIssues("type-refining");
- addIfNoDWARFIssues("signature-pruning");
- addIfNoDWARFIssues("signature-refining");
+ if (options.closedWorld) {
+ addIfNoDWARFIssues("type-refining");
+ addIfNoDWARFIssues("signature-pruning");
+ addIfNoDWARFIssues("signature-refining");
+ }
addIfNoDWARFIssues("global-refining");
// 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");
+ if (options.closedWorld) {
+ addIfNoDWARFIssues("gto");
+ }
addIfNoDWARFIssues("remove-unused-module-elements");
- addIfNoDWARFIssues("cfp");
- addIfNoDWARFIssues("gsi");
+ if (options.closedWorld) {
+ addIfNoDWARFIssues("cfp");
+ addIfNoDWARFIssues("gsi");
+ }
}
// TODO: generate-global-effects here, right before function passes, then
// discard in addDefaultGlobalOptimizationPostPasses? the benefit seems