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 fa706dd10..595b431ca 100644
--- a/src/passes/pass.cpp
+++ b/src/passes/pass.cpp
@@ -423,7 +423,13 @@ void PassRunner::addDefaultFunctionOptimizationPasses() {
// that depend on flat IR
if (options.optimizeLevel >= 4) {
addIfNoDWARFIssues("flatten");
+ // LocalCSE is particularly useful after flatten (see comment in the pass
+ // itself), but we must simplify locals a little first (as flatten adds many
+ // new and redundant ones, which make things seem different if we do not
+ // run some amount of simplify-locals first).
+ addIfNoDWARFIssues("simplify-locals-notee-nostructure");
addIfNoDWARFIssues("local-cse");
+ // TODO: add rereloop etc. here
}
addIfNoDWARFIssues("dce");
addIfNoDWARFIssues("remove-unused-names");