summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/JumpThreading/PR33357-lvi-recursion.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms/JumpThreading/PR33357-lvi-recursion.ll')
-rw-r--r--llvm/test/Transforms/JumpThreading/PR33357-lvi-recursion.ll37
1 files changed, 37 insertions, 0 deletions
diff --git a/llvm/test/Transforms/JumpThreading/PR33357-lvi-recursion.ll b/llvm/test/Transforms/JumpThreading/PR33357-lvi-recursion.ll
new file mode 100644
index 00000000000..e328f32c9c3
--- /dev/null
+++ b/llvm/test/Transforms/JumpThreading/PR33357-lvi-recursion.ll
@@ -0,0 +1,37 @@
+; RUN: opt -S -jump-threading -verify -o - %s | FileCheck %s
+@a = external global i16, align 1
+
+; CHECK-LABEL: f
+; CHECK: bb6:
+; CHECK: bb2:
+; CHECK: bb3:
+; CHECK-NOT: bb0:
+; CHECK-NOT: bb1:
+; CHECK-NOT: bb4:
+; CHECK-NOT: bb5:
+define void @f(i32 %p1) {
+bb0:
+ %0 = icmp eq i32 %p1, 0
+ br i1 undef, label %bb6, label %bb1
+
+bb1:
+ br label %bb2
+
+bb2:
+ %1 = phi i1 [ %0, %bb1 ], [ %2, %bb4 ]
+ %2 = and i1 %1, undef
+ br i1 %2, label %bb3, label %bb4
+
+bb3:
+ store i16 undef, i16* @a, align 1
+ br label %bb4
+
+bb4:
+ br i1 %0, label %bb2, label %bb5
+
+bb5:
+ unreachable
+
+bb6:
+ ret void
+}
OpenPOWER on IntegriCloud