Index: lib/Transforms/Scalar/LoopRotation.cpp =================================================================== --- lib/Transforms/Scalar/LoopRotation.cpp +++ lib/Transforms/Scalar/LoopRotation.cpp @@ -445,6 +445,11 @@ DomTreeNode *Node = HeaderChildren[I]; BasicBlock *BB = Node->getBlock(); + // The new header idom has been updated correctly. It by definition + // can only be dominated by the preheader. + if (BB == NewHeader) + continue; + pred_iterator PI = pred_begin(BB); BasicBlock *NearestDom = *PI; for (pred_iterator PE = pred_end(BB); PI != PE; ++PI)