xref: /llvm-project/llvm/test/Transforms/JumpThreading/threading_prof2.ll (revision a1b78fb929fccf96acaa0212cf68fee82298e747)
1; RUN: opt -passes=jump-threading -S < %s | FileCheck %s
2define void @test() {
3bb:
4  %tmp = call i32 @a()
5  %tmp1 = icmp eq i32 %tmp, 1
6  br i1 %tmp1, label %bb5, label %bb2
7; CHECK: br i1 %tmp1,{{.*}} !prof ![[PROF1:[0-9]+]]
8
9bb2:
10  %tmp3 = call i32 @b()
11  %tmp4 = icmp ne i32 %tmp3, 1
12  br label %bb5
13; CHECK: br i1 %tmp4, {{.*}} !prof ![[PROF2:[0-9]+]]
14
15bb5:
16  %tmp6 = phi i1 [ false, %bb ], [ %tmp4, %bb2 ]
17  br i1 %tmp6, label %bb8, label %bb7, !prof !0
18
19bb7:
20  call void @bar()
21  br label %bb9
22
23bb8:
24  call void @foo()
25  br label %bb9
26
27bb9:
28  ret void
29}
30
31declare void @bar()
32
33declare void @foo()
34
35declare i32 @a()
36
37declare i32 @b()
38
39!0 = !{!"branch_weights", i32 2146410443, i32 1073205}
40;CHECK: ![[PROF1]] = !{!"branch_weights", i32 1073205, i32 2146410443}
41;CHECK: ![[PROF2]] = !{!"branch_weights", i32 -2147483648, i32 0}
42