Index: lib/Target/PowerPC/LLVMBuild.txt =================================================================== --- lib/Target/PowerPC/LLVMBuild.txt +++ lib/Target/PowerPC/LLVMBuild.txt @@ -31,5 +31,5 @@ type = Library name = PowerPCCodeGen parent = PowerPC -required_libraries = Analysis AsmPrinter CodeGen Core MC PowerPCAsmPrinter PowerPCDesc PowerPCInfo Scalar SelectionDAG Support Target TransformUtils +required_libraries = Analysis AsmPrinter CodeGen Core InstCombine MC PowerPCAsmPrinter PowerPCDesc PowerPCInfo Scalar SelectionDAG Support Target TransformUtils add_to_library_groups = PowerPC Index: lib/Target/PowerPC/PPCTargetMachine.cpp =================================================================== --- lib/Target/PowerPC/PPCTargetMachine.cpp +++ lib/Target/PowerPC/PPCTargetMachine.cpp @@ -336,9 +336,14 @@ if (!DisablePreIncPrep && getOptLevel() != CodeGenOpt::None) addPass(createPPCLoopPreIncPrepPass(getPPCTargetMachine())); - if (!DisableCTRLoops && getOptLevel() != CodeGenOpt::None) + if (!DisableCTRLoops && getOptLevel() != CodeGenOpt::None) { addPass(createPPCCTRLoops()); + // Run instcombine to eliminate induction variables unused after + // rewritten by CTR loop optimization. + addPass(createInstructionCombiningPass(/* ExpensiveCombines = */false)); + } + return false; }