diff options
Diffstat (limited to 'llvm/test/Transforms/JumpThreading')
| -rw-r--r-- | llvm/test/Transforms/JumpThreading/pr36133.ll | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/llvm/test/Transforms/JumpThreading/pr36133.ll b/llvm/test/Transforms/JumpThreading/pr36133.ll new file mode 100644 index 00000000000..b8d8c5fac46 --- /dev/null +++ b/llvm/test/Transforms/JumpThreading/pr36133.ll @@ -0,0 +1,44 @@ +; RUN: opt -jump-threading -S < %s | FileCheck %s +@global = external global i8*, align 8 + +define i32 @foo(i32 %arg) { +; CHECK-LABEL: @foo +; CHECK-LABEL: bb: +; CHECK: icmp eq +; CHECK-NEXT: br i1 %tmp1, label %bb7, label %bb7 +bb: + %tmp = load i8*, i8** @global, align 8 + %tmp1 = icmp eq i8* %tmp, null + br i1 %tmp1, label %bb3, label %bb2 + +; CHECK-NOT: bb2: +bb2: + br label %bb3 + +; CHECK-NOT: bb3: +bb3: + %tmp4 = phi i8 [ 1, %bb2 ], [ 0, %bb ] + %tmp5 = icmp eq i8 %tmp4, 0 + br i1 %tmp5, label %bb7, label %bb6 + +; CHECK-NOT: bb6: +bb6: + br label %bb7 + +; CHECK-LABEL: bb7: +bb7: + %tmp8 = icmp eq i32 %arg, -1 + br i1 %tmp8, label %bb9, label %bb10 + +; CHECK-LABEL: bb9: +bb9: + ret i32 0 + +; CHECK-LABEL: bb10: +bb10: + %tmp11 = icmp sgt i32 %arg, -1 + call void @llvm.assume(i1 %tmp11) + ret i32 1 +} + +declare void @llvm.assume(i1) |

