diff options
Diffstat (limited to 'llvm/test/Transforms/JumpThreading/removed-use.ll')
-rw-r--r-- | llvm/test/Transforms/JumpThreading/removed-use.ll | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/llvm/test/Transforms/JumpThreading/removed-use.ll b/llvm/test/Transforms/JumpThreading/removed-use.ll new file mode 100644 index 00000000000..bc97429cbae --- /dev/null +++ b/llvm/test/Transforms/JumpThreading/removed-use.ll @@ -0,0 +1,54 @@ +; RUN: opt -S < %s -jump-threading | FileCheck %s +; CHECK-LABEL: @foo +; CHECK: bb6: +; CHECK-NEXT: ret void +; CHECK: bb3: +; CHECK: br label %bb3 +define void @foo() { +entry: + br i1 true, label %bb6, label %bb3 + +bb3: + %x0 = phi i32 [ undef, %entry ], [ %x1, %bb5 ] + %y = and i64 undef, 1 + %p = icmp ne i64 %y, 0 + br i1 %p, label %bb4, label %bb5 + +bb4: + br label %bb5 + +bb5: + %x1 = phi i32 [ %x0, %bb3 ], [ %x0, %bb4 ] + %z = phi i32 [ 0, %bb3 ], [ 1, %bb4 ] + %q = icmp eq i32 %z, 0 + br i1 %q, label %bb3, label %bb6 + +bb6: + ret void +} + +; CHECK-LABEL: @bar +; Just check that we don't crash on this test. +define void @bar(i1 %p) { +entry: + br i1 false, label %bb2, label %exit + +bb2: + %x0 = phi i32 [ undef, %entry ], [ %x1, %bb5 ] + br i1 %p, label %bb3, label %bb4 + +bb3: + br label %bb5 + +bb4: + br label %bb5 + +bb5: + %x1 = phi i32 [ %x0, %bb3 ], [ 0, %bb4 ] + switch i32 %x1, label %exit [ + i32 10, label %bb2 + ] + +exit: + ret void +} |