mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
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
This commit is contained in:
parent
888d78216f
commit
73fa16be5d
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user