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 8f954e5e3..ad0cc448c 100644
--- a/src/passes/pass.cpp
+++ b/src/passes/pass.cpp
@@ -669,7 +669,13 @@ void PassRunner::addDefaultFunctionOptimizationPasses() {
}
void PassRunner::addDefaultGlobalOptimizationPrePasses() {
+ // Removing duplicate functions is fast and saves work later.
addIfNoDWARFIssues("duplicate-function-elimination");
+ // Do a global cleanup before anything heavy, as it is fairly fast and can
+ // save a lot of work if there is a significant amount of dead code.
+ if (options.optimizeLevel >= 2) {
+ addIfNoDWARFIssues("remove-unused-module-elements");
+ }
addIfNoDWARFIssues("memory-packing");
if (options.optimizeLevel >= 2) {
addIfNoDWARFIssues("once-reduction");