GlobalDCE should be run at -O2 / -Os to eliminate unused dtor, etc. rdar://9142819
authorEvan Cheng <evan.cheng@apple.com>
Fri, 28 Sep 2012 21:23:26 +0000 (21:23 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 28 Sep 2012 21:23:26 +0000 (21:23 +0000)
llvm-svn: 164850

llvm/lib/Transforms/IPO/PassManagerBuilder.cpp

index c81b333..9e328b9 100644 (file)
@@ -211,13 +211,12 @@ void PassManagerBuilder::populateModulePassManager(PassManagerBase &MPM) {
     // FIXME: We shouldn't bother with this anymore.
     MPM.add(createStripDeadPrototypesPass()); // Get rid of dead prototypes
 
-    // GlobalOpt already deletes dead functions and globals, at -O3 try a
+    // GlobalOpt already deletes dead functions and globals, at -O2 try a
     // late pass of GlobalDCE.  It is capable of deleting dead cycles.
-    if (OptLevel > 2)
+    if (OptLevel > 1) {
       MPM.add(createGlobalDCEPass());         // Remove dead fns and globals.
-
-    if (OptLevel > 1)
       MPM.add(createConstantMergePass());     // Merge dup global constants
+    }
   }
   addExtensionsToPM(EP_OptimizerLast, MPM);
 }