diff options
Diffstat (limited to 'src/passes/pass.cpp')
-rw-r--r-- | src/passes/pass.cpp | 18 |
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 |