Check iteration count.
authorDevang Patel <dpatel@apple.com>
Wed, 3 Sep 2008 00:10:56 +0000 (00:10 +0000)
committerDevang Patel <dpatel@apple.com>
Wed, 3 Sep 2008 00:10:56 +0000 (00:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55680 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LoopStrengthReduce.cpp
test/Transforms/LoopStrengthReduce/2008-09-02-IVType.ll

index b2c5977a1b64d0cdd38039830738bfd697a8872f..16b8dbb451ff81db8350ba971ebed402cbb87af2 100644 (file)
@@ -1908,6 +1908,10 @@ BinaryOperator *getNewPHIIncrement(BinaryOperator *Incr, PHINode *PHI,
 /// change the type of IV, if possible.
 void LoopStrengthReduce::OptimizeIVType(Loop *L) {
 
+  SCEVHandle IterationCount = SE->getIterationCount(L);
+  if (isa<SCEVCouldNotCompute>(IterationCount))
+    return;
+
   BasicBlock *LPH = L->getLoopPreheader();
   BasicBlock *LatchBB = L->getLoopLatch();
   SmallVector<PHINode *, 4> PHIs;
index 772d9dda0f514aec790a69a583d8f12d3184883c..49df675e588965a3fb4469038e28f0c8ee1b7dab 100644 (file)
@@ -49,7 +49,7 @@ bb28:         ; preds = %bb8, %bb
        store i16* %theDCTBufferIter.0.lcssa, i16** %tmp6, align 4
        %tmp37 = add i16 %component.09, 1               ; <i16> [#uses=2]
        %phitmp15 = sext i16 %tmp37 to i32              ; <i32> [#uses=1]
-       %tmp46 = icmp slt i32 %phitmp15, %tmp4412               ; <i1> [#uses=1]
+       %tmp46 = icmp slt i32 %phitmp15, 42             ; <i1> [#uses=1]
        br i1 %tmp46, label %bb, label %bb49
 
 bb49:          ; preds = %bb28, %entry