1; RUN: opt -debug-only=branch-prob -jump-threading -S %s 2>&1 | FileCheck %s
2
3; Make sure that we set the branch probability for the newly created
4; basic block.
5
6define void @foo(i1 %cond1, i1 %cond2) !prof !0 !PGOFuncName !1 {
7entry:
8  br i1 %cond1, label %bb.f1, label %bb.f2, !prof !2
9
10bb.f1:
11  call void @f1()
12  br label %bb.cond2
13
14bb.f2:
15  call void @f2()
16  br label %bb.cond2
17
18bb.cond2:
19  br i1 %cond2, label %exit, label %bb.cond1again, !prof !3
20; CHECK: set edge bb.cond2.thread -> 0 successor probability to 0x79b9d244 / 0x80000000
21; CHECK: set edge bb.cond2.thread -> 1 successor probability to 0x06462dbc / 0x80000000 = 4.90
22
23bb.cond1again:
24  br i1 %cond1, label %bb.f3, label %bb.f4, !prof !4
25
26bb.f3:
27  call void @f3()
28  br label %exit
29
30bb.f4:
31  call void @f4()
32  br label %exit
33
34exit:
35  ret void
36}
37
38declare void @f1()
39
40declare void @f2()
41
42declare void @f3()
43
44declare void @f4()
45
46!0 = !{!"function_entry_count", i64 15985}
47!1 = !{!"foo.cpp:foo"}
48!2 = !{!"branch_weights", i32 0, i32 36865}
49!3 = !{!"branch_weights", i32 35058, i32 1807}
50!4 = !{!"branch_weights", i32 1807, i32 35058}
51