aboutsummaryrefslogtreecommitdiffstats
path: root/test/Analysis/ScalarEvolution/pr22641.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Analysis/ScalarEvolution/pr22641.ll')
-rw-r--r--test/Analysis/ScalarEvolution/pr22641.ll25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/Analysis/ScalarEvolution/pr22641.ll b/test/Analysis/ScalarEvolution/pr22641.ll
new file mode 100644
index 0000000..3b55afe
--- /dev/null
+++ b/test/Analysis/ScalarEvolution/pr22641.ll
@@ -0,0 +1,25 @@
+; RUN: opt -analyze -scalar-evolution < %s | FileCheck %s
+
+define i1 @main(i16 %a) {
+; CHECK-LABEL: Classifying expressions for: @main
+entry:
+ br label %body
+
+body:
+ %dec2 = phi i16 [ %a, %entry ], [ %dec, %cond ]
+ %dec = add i16 %dec2, -1
+ %conv2 = zext i16 %dec2 to i32
+ %conv = zext i16 %dec to i32
+; CHECK: %conv = zext i16 %dec to i32
+; CHECK-NEXT: --> {(zext i16 (-1 + %a) to i32),+,65535}<nuw><%body>
+; CHECK-NOT: --> {(65535 + (zext i16 %a to i32)),+,65535}<nuw><%body>
+
+ br label %cond
+
+cond:
+ br i1 false, label %body, label %exit
+
+exit:
+ %ret = icmp ne i32 %conv, 0
+ ret i1 %ret
+}