LoopRotate: When reconstructing loop simplify form don't split edges from indirectbrs.
[oota-llvm.git] / lib / Transforms / Scalar / LoopRotation.cpp
index 2606805400fdce8774e022e497d9f28001000d2c..4d1234905370bb11ef7ec2734c3f5d4b23e1f462 100644 (file)
@@ -535,6 +535,8 @@ bool LoopRotate::rotateLoop(Loop *L, bool SimplifiedLatch) {
       Loop *PredLoop = LI->getLoopFor(*PI);
       if (!PredLoop || PredLoop->contains(Exit))
         continue;
+      if (isa<IndirectBrInst>((*PI)->getTerminator()))
+        continue;
       SplitLatchEdge |= L->getLoopLatch() == *PI;
       BasicBlock *ExitSplit = SplitCriticalEdge(
           *PI, Exit, CriticalEdgeSplittingOptions(DT, LI).setPreserveLCSSA());