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.cpp6
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");