diff options
Diffstat (limited to 'src/passes/pass.cpp')
-rw-r--r-- | src/passes/pass.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp index 3713ed8b7..878ecb3cb 100644 --- a/src/passes/pass.cpp +++ b/src/passes/pass.cpp @@ -233,6 +233,9 @@ void PassRegistry::registerPasses() { "removes calls to atexit(), which is valid if the C runtime " "will never be exited", createNoExitRuntimePass); + registerPass("once-reduction", + "reduces calls to code that only runs once", + createOnceReductionPass); registerPass("optimize-added-constants", "optimizes added constants into load/store offsets", createOptimizeAddedConstantsPass); @@ -511,6 +514,9 @@ void PassRunner::addDefaultFunctionOptimizationPasses() { void PassRunner::addDefaultGlobalOptimizationPrePasses() { addIfNoDWARFIssues("duplicate-function-elimination"); addIfNoDWARFIssues("memory-packing"); + if (options.optimizeLevel >= 2) { + addIfNoDWARFIssues("once-reduction"); + } if (wasm->features.hasGC() && getTypeSystem() == TypeSystem::Nominal && options.optimizeLevel >= 2) { addIfNoDWARFIssues("cfp"); |