summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-11-01 19:09:12 +0000
committerChris Lattner <sabre@nondot.org>2009-11-01 19:09:12 +0000
commit649f4e9e8f69bafc0b06a420c8e650fa047de91a (patch)
treed4364684cfe7ee3d9c02c9f699000cf4ae7394ce
parentb5d9c8c708ec828c09030b11519da8838fe7c7be (diff)
downloadbcm5719-llvm-649f4e9e8f69bafc0b06a420c8e650fa047de91a.tar.gz
bcm5719-llvm-649f4e9e8f69bafc0b06a420c8e650fa047de91a.zip
only run GlobalDCE at -O3 and run it late instead of early.
GlobalOpt already deletes trivially dead functions/globals, so GlobalDCE only adds values for cycles of dead things. llvm-svn: 85731
-rw-r--r--llvm/include/llvm/Support/StandardPasses.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/llvm/include/llvm/Support/StandardPasses.h b/llvm/include/llvm/Support/StandardPasses.h
index d7a3dc059f4..ff0a6d69917 100644
--- a/llvm/include/llvm/Support/StandardPasses.h
+++ b/llvm/include/llvm/Support/StandardPasses.h
@@ -99,7 +99,7 @@ namespace llvm {
PM->add(createCFGSimplificationPass()); // Clean up disgusting code
if (UnitAtATime) {
PM->add(createGlobalOptimizerPass()); // Optimize out global vars
- PM->add(createGlobalDCEPass()); // Remove unused fns and globs
+
PM->add(createIPSCCPPass()); // IP SCCP
PM->add(createDeadArgEliminationPass()); // Dead argument elimination
}
@@ -149,10 +149,15 @@ namespace llvm {
if (UnitAtATime) {
PM->add(createStripDeadPrototypesPass()); // Get rid of dead prototypes
PM->add(createDeadTypeEliminationPass()); // Eliminate dead types
- }
- if (OptimizationLevel > 1 && UnitAtATime)
- PM->add(createConstantMergePass()); // Merge dup global constants
+ // GlobalOpt already deletes dead functions and globals, at -O3 try a
+ // late pass of GlobalDCE. It is capable of deleting dead cycles.
+ if (OptimizationLevel > 2)
+ PM->add(createGlobalDCEPass()); // Remove dead fns and globals.
+
+ if (OptimizationLevel > 1)
+ PM->add(createConstantMergePass()); // Merge dup global constants
+ }
}
static inline void addOnePass(PassManager *PM, Pass *P, bool AndVerify) {
OpenPOWER on IntegriCloud