Index: lib/CodeGen/CodegenCleanup.cpp =================================================================== --- lib/CodeGen/CodegenCleanup.cpp +++ lib/CodeGen/CodegenCleanup.cpp @@ -62,36 +62,46 @@ FPM->add(createCFGSimplificationPass()); FPM->add(createSROAPass()); FPM->add(createEarlyCSEPass()); - FPM->add(createInstructionCombiningPass()); + + FPM->add(createPromoteMemoryToRegisterPass()); + FPM->add(createInstructionCombiningPass(true)); + FPM->add(createCFGSimplificationPass()); + FPM->add(createSROAPass()); + FPM->add(createEarlyCSEPass(true)); + FPM->add(createSpeculativeExecutionIfHasBranchDivergencePass()); FPM->add(createJumpThreadingPass()); FPM->add(createCorrelatedValuePropagationPass()); FPM->add(createCFGSimplificationPass()); - FPM->add(createInstructionCombiningPass()); + FPM->add(createInstructionCombiningPass(true)); + FPM->add(createLibCallsShrinkWrapPass()); + FPM->add(createTailCallEliminationPass()); FPM->add(createCFGSimplificationPass()); FPM->add(createReassociatePass()); - FPM->add(createLoopRotatePass()); + FPM->add(createLoopRotatePass(-1)); FPM->add(createGVNPass()); FPM->add(createLICMPass()); FPM->add(createLoopUnswitchPass()); FPM->add(createCFGSimplificationPass()); - FPM->add(createInstructionCombiningPass()); + FPM->add(createInstructionCombiningPass(true)); FPM->add(createIndVarSimplifyPass()); FPM->add(createLoopIdiomPass()); FPM->add(createLoopDeletionPass()); FPM->add(createCFGSimplificationPass()); - FPM->add(createSimpleLoopUnrollPass()); + FPM->add(createSimpleLoopUnrollPass(3)); FPM->add(createMergedLoadStoreMotionPass()); + FPM->add(createGVNPass()); FPM->add(createMemCpyOptPass()); + FPM->add(createSCCPPass()); FPM->add(createBitTrackingDCEPass()); - FPM->add(createInstructionCombiningPass()); + FPM->add(createInstructionCombiningPass(true)); FPM->add(createJumpThreadingPass()); FPM->add(createCorrelatedValuePropagationPass()); FPM->add(createDeadStoreEliminationPass()); FPM->add(createLICMPass()); - FPM->add(createLoopRerollPass()); FPM->add(createAggressiveDCEPass()); FPM->add(createCFGSimplificationPass()); - FPM->add(createInstructionCombiningPass()); + FPM->add(createInstructionCombiningPass(true)); + FPM->add(createFloat2IntPass()); return FPM->doInitialization(); }