diff options
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/IPO/PassManagerBuilder.cpp | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp index 8ce4f032dac..fd10c2bd06e 100644 --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -242,11 +242,6 @@ void PassManagerBuilder::addFunctionSimplificationPasses( MPM.add(createTailCallEliminationPass()); // Eliminate tail calls MPM.add(createCFGSimplificationPass()); // Merge & remove BBs MPM.add(createReassociatePass()); // Reassociate expressions - if (PrepareForThinLTO) { - MPM.add(createAggressiveDCEPass()); // Delete dead instructions - addInstructionCombiningPass(MPM); // Combine silly seq's - return; - } // Rotate Loop - disable header duplication at -Oz MPM.add(createLoopRotatePass(SizeLevel == 2 ? 0 : -1)); MPM.add(createLICMPass()); // Hoist loop invariants @@ -431,26 +426,21 @@ void PassManagerBuilder::populateModulePassManager( return; } + if (PerformThinLTO) + // Optimize globals now when performing ThinLTO, this enables more + // optimizations later. + MPM.add(createGlobalOptimizerPass()); + // Scheduling LoopVersioningLICM when inlining is over, because after that // we may see more accurate aliasing. Reason to run this late is that too // early versioning may prevent further inlining due to increase of code - // size. By placing it just after inlining other optimizations which runs - // later might get benefit of no-alias assumption in clone loop. + // size. By placing it just after inlining other optimizations which runs + // later might get benefit of no-alias assumption in clone loop. if (UseLoopVersioningLICM) { MPM.add(createLoopVersioningLICMPass()); // Do LoopVersioningLICM MPM.add(createLICMPass()); // Hoist loop invariants } - if (PerformThinLTO) { - // Remove dead fns and globals. Removing unreferenced functions could lead - // to more opportunities for globalopt. - MPM.add(createGlobalDCEPass()); - MPM.add(createGlobalOptimizerPass()); - // Remove dead fns and globals after globalopt. - MPM.add(createGlobalDCEPass()); - addFunctionSimplificationPasses(MPM); - } - if (EnableNonLTOGlobalsModRef) // We add a fresh GlobalsModRef run at this point. This is particularly // useful as the above will have inlined, DCE'ed, and function-attr |

