diff test/Transforms/IndVarSimplify/2006-03-31-NegativeStride.ll @ 0:95c75e76d11b LLVM3.4

LLVM 3.4
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Thu, 12 Dec 2013 13:56:28 +0900
parents
children 1172e4bd9c6f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/Transforms/IndVarSimplify/2006-03-31-NegativeStride.ll	Thu Dec 12 13:56:28 2013 +0900
@@ -0,0 +1,22 @@
+; PR726
+; RUN: opt < %s -indvars -S | \
+; RUN:   grep "ret i32 27"
+
+; Make sure to compute the right exit value based on negative strides.
+
+define i32 @test() {
+entry:
+        br label %cond_true
+
+cond_true:              ; preds = %cond_true, %entry
+        %a.0.0 = phi i32 [ 10, %entry ], [ %tmp4, %cond_true ]          ; <i32> [#uses=2]
+        %b.0.0 = phi i32 [ 0, %entry ], [ %tmp2, %cond_true ]           ; <i32> [#uses=1]
+        %tmp2 = add i32 %b.0.0, %a.0.0          ; <i32> [#uses=2]
+        %tmp4 = add i32 %a.0.0, -1              ; <i32> [#uses=2]
+        %tmp = icmp sgt i32 %tmp4, 7            ; <i1> [#uses=1]
+        br i1 %tmp, label %cond_true, label %bb7
+
+bb7:            ; preds = %cond_true
+        ret i32 %tmp2
+}
+