Index: lib/Transforms/IPO/PassManagerBuilder.cpp =================================================================== --- lib/Transforms/IPO/PassManagerBuilder.cpp +++ lib/Transforms/IPO/PassManagerBuilder.cpp @@ -262,8 +262,12 @@ addExtensionsToPM(EP_ScalarOptimizerLate, MPM); - if (RerollLoops) + if (RerollLoops) { + // Run LICM before loop rerolling, as rerolling cannot handle any + // loop-invariant values at all. + MPM.add(createLICMPass()); MPM.add(createLoopRerollPass()); + } if (!RunSLPAfterLoopVectorization) { if (SLPVectorize) MPM.add(createSLPVectorizerPass()); // Vectorize parallel scalar chains.