if (!DisableInline)
addPass(PM, createFunctionInliningPass()); // Inline small functions
- addPass(PM, createSimplifyLibCallsPass()); // Library Call Optimizations
addPass(PM, createArgumentPromotionPass()); // Scalarize uninlined fn args
addPass(PM, createTailDuplicationPass()); // Simplify cfg by copying code
+ addPass(PM, createSimplifyLibCallsPass()); // Library Call Optimizations
addPass(PM, createInstructionCombiningPass()); // Cleanup for scalarrepl.
+ addPass(PM, createJumpThreadingPass()); // Thread jumps.
addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs
addPass(PM, createScalarReplAggregatesPass()); // Break up aggregate allocas
addPass(PM, createInstructionCombiningPass()); // Combine silly seq's
addPass(PM, createLoopIndexSplitPass()); // Index split loops.
addPass(PM, createInstructionCombiningPass()); // Clean up after LICM/reassoc
addPass(PM, createIndVarSimplifyPass()); // Canonicalize indvars
+ addPass(PM, createLoopDeletionPass()); // Delete dead loops
addPass(PM, createLoopUnrollPass()); // Unroll small loops
addPass(PM, createInstructionCombiningPass()); // Clean up after the unroller
addPass(PM, createGVNPass()); // Remove redundancies