diff options
Diffstat (limited to 'test/Analysis/ScalarEvolution/pr22641.ll')
-rw-r--r-- | test/Analysis/ScalarEvolution/pr22641.ll | 25 |
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 +} |