mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
fix two strange things in the default passmgr:
1. we'd run simplifycfg at the very start, even though the per function passes have already cleaned this up. 2. In the main per-function pipeline that is interlaced with inlining etc, we would do instcombine, jump threading, simplifycfg *before* doing SROA. SROA is much more likely to expose opportunities for these passes than they are for SROA, so move SRoA up earlier. also add some comments. llvm-svn: 85742
This commit is contained in:
parent
326adfb172
commit
dc9cf48396
@ -96,7 +96,6 @@ namespace llvm {
|
||||
return;
|
||||
}
|
||||
|
||||
PM->add(createCFGSimplificationPass()); // Clean up disgusting code
|
||||
if (UnitAtATime) {
|
||||
PM->add(createGlobalOptimizerPass()); // Optimize out global vars
|
||||
|
||||
@ -106,6 +105,8 @@ namespace llvm {
|
||||
}
|
||||
PM->add(createInstructionCombiningPass()); // Clean up after IPCP & DAE
|
||||
PM->add(createCFGSimplificationPass()); // Clean up after IPCP & DAE
|
||||
|
||||
// Start of CallGraph SCC passes.
|
||||
if (UnitAtATime) {
|
||||
if (HaveExceptions)
|
||||
PM->add(createPruneEHPass()); // Remove dead EH info
|
||||
@ -115,13 +116,18 @@ namespace llvm {
|
||||
PM->add(InliningPass);
|
||||
if (OptimizationLevel > 2)
|
||||
PM->add(createArgumentPromotionPass()); // Scalarize uninlined fn args
|
||||
|
||||
// Start of function pass.
|
||||
|
||||
PM->add(createScalarReplAggregatesPass()); // Break up aggregate allocas
|
||||
if (SimplifyLibCalls)
|
||||
PM->add(createSimplifyLibCallsPass()); // Library Call Optimizations
|
||||
PM->add(createInstructionCombiningPass()); // Cleanup for scalarrepl.
|
||||
PM->add(createJumpThreadingPass()); // Thread jumps.
|
||||
PM->add(createCFGSimplificationPass()); // Merge & remove BBs
|
||||
PM->add(createScalarReplAggregatesPass()); // Break up aggregate allocas
|
||||
PM->add(createInstructionCombiningPass()); // Combine silly seq's
|
||||
|
||||
// FIXME: CondProp breaks critical edges, which is slow.
|
||||
PM->add(createCondPropagationPass()); // Propagate conditionals
|
||||
PM->add(createTailCallEliminationPass()); // Eliminate tail calls
|
||||
PM->add(createCFGSimplificationPass()); // Merge & remove BBs
|
||||
|
Loading…
Reference in New Issue
Block a user