| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py | |
| ; RUN: opt -S -passes=jump-threading < %s | FileCheck %s | |
| declare i8 @mcguffin() | |
| ; Check there's no phi here. | |
| define i32 @test(i1 %foo, i8 %b) { | |
| ; CHECK-LABEL: @test( | |
| ; CHECK-NEXT: entry: | |
| ; CHECK-NEXT: [[A:%.*]] = call i8 @mcguffin() | |
| ; CHECK-NEXT: br i1 [[FOO:%.*]], label [[RT:%.*]], label [[JT:%.*]] | |
| ; CHECK: jt: | |
| ; CHECK-NEXT: [[CMP_A:%.*]] = icmp eq i8 [[B:%.*]], [[A]] | |
| ; CHECK-NEXT: br i1 [[CMP_A]], label [[RT]], label [[RF:%.*]] | |
| ; CHECK: rt: | |
| ; CHECK-NEXT: ret i32 7 | |
| ; CHECK: rf: | |
| ; CHECK-NEXT: ret i32 8 | |
| ; | |
| entry: | |
| %a = call i8 @mcguffin() | |
| br i1 %foo, label %bb1, label %bb2 | |
| bb1: | |
| br label %jt | |
| bb2: | |
| br label %jt | |
| jt: | |
| %x = phi i8 [%a, %bb1], [%b, %bb2] | |
| %cmp.a = icmp eq i8 %x, %a | |
| br i1 %cmp.a, label %rt, label %rf | |
| rt: | |
| ret i32 7 | |
| rf: | |
| ret i32 8 | |
| } |