diff options
| author | Chris Lattner <sabre@nondot.org> | 2009-11-01 19:09:12 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2009-11-01 19:09:12 +0000 |
| commit | 649f4e9e8f69bafc0b06a420c8e650fa047de91a (patch) | |
| tree | d4364684cfe7ee3d9c02c9f699000cf4ae7394ce | |
| parent | b5d9c8c708ec828c09030b11519da8838fe7c7be (diff) | |
| download | bcm5719-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.h | 13 |
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) { |

