xref: /llvm-project/llvm/test/Transforms/JumpThreading/branch-no-const.ll (revision b6909fe9ca1789db98c3481977468d33e9886182)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes=jump-threading < %s | FileCheck %s
3
4declare i8 @mcguffin()
5
6; Check there's no phi here.
7define i32 @test(i1 %foo, i8 %b) {
8; CHECK-LABEL: @test(
9; CHECK-NEXT:  entry:
10; CHECK-NEXT:    [[A:%.*]] = call i8 @mcguffin()
11; CHECK-NEXT:    br i1 [[FOO:%.*]], label [[RT:%.*]], label [[JT:%.*]]
12; CHECK:       jt:
13; CHECK-NEXT:    [[CMP_A:%.*]] = icmp eq i8 [[B:%.*]], [[A]]
14; CHECK-NEXT:    br i1 [[CMP_A]], label [[RT]], label [[RF:%.*]]
15; CHECK:       rt:
16; CHECK-NEXT:    ret i32 7
17; CHECK:       rf:
18; CHECK-NEXT:    ret i32 8
19;
20entry:
21  %a = call i8 @mcguffin()
22  br i1 %foo, label %bb1, label %bb2
23bb1:
24  br label %jt
25bb2:
26  br label %jt
27jt:
28  %x = phi i8 [%a, %bb1], [%b, %bb2]
29  %cmp.a = icmp eq i8 %x, %a
30  br i1 %cmp.a, label %rt, label %rf
31rt:
32  ret i32 7
33rf:
34  ret i32 8
35}
36