blob: c7917857ee605b6b3ab791b01ee4eae465653d2c [file] [log] [blame]
Nick Lewyckyc9a1aed2011-12-26 20:54:14 +00001; RUN: opt -simplifycfg -S -o - < %s | FileCheck %s
2
3declare void @helper(i32)
4
5define void @test1(i1 %a, i1 %b) {
Benjamin Kramer44aac552012-01-05 00:43:34 +00006; CHECK: @test1
Nick Lewyckyc9a1aed2011-12-26 20:54:14 +00007entry:
8 br i1 %a, label %Y, label %X, !prof !0
9; CHECK: br i1 %or.cond, label %Z, label %Y, !prof !0
10
11X:
12 %c = or i1 %b, false
Nick Lewycky06cc66f2011-12-27 04:31:52 +000013 br i1 %c, label %Z, label %Y, !prof !1
14
15Y:
16 call void @helper(i32 0)
17 ret void
18
19Z:
20 call void @helper(i32 1)
21 ret void
22}
23
24define void @test2(i1 %a, i1 %b) {
25; CHECK: @test2
26entry:
27 br i1 %a, label %X, label %Y, !prof !1
28; CHECK: br i1 %or.cond, label %Z, label %Y, !prof !1
29; CHECK-NOT: !prof
30
31X:
32 %c = or i1 %b, false
33 br i1 %c, label %Z, label %Y, !prof !2
34
35Y:
36 call void @helper(i32 0)
37 ret void
38
39Z:
40 call void @helper(i32 1)
41 ret void
42}
43
44define void @test3(i1 %a, i1 %b) {
45; CHECK: @test3
46; CHECK-NOT: !prof
47entry:
48 br i1 %a, label %X, label %Y, !prof !1
49
50X:
51 %c = or i1 %b, false
Nick Lewyckyc9a1aed2011-12-26 20:54:14 +000052 br i1 %c, label %Z, label %Y
53
54Y:
55 call void @helper(i32 0)
56 ret void
57
58Z:
59 call void @helper(i32 1)
60 ret void
61}
62
Nick Lewycky06cc66f2011-12-27 04:31:52 +000063define void @test4(i1 %a, i1 %b) {
64; CHECK: @test4
65; CHECK-NOT: !prof
66entry:
67 br i1 %a, label %X, label %Y
Nick Lewyckyc9a1aed2011-12-26 20:54:14 +000068
Nick Lewycky06cc66f2011-12-27 04:31:52 +000069X:
70 %c = or i1 %b, false
71 br i1 %c, label %Z, label %Y, !prof !1
72
73Y:
74 call void @helper(i32 0)
75 ret void
76
77Z:
78 call void @helper(i32 1)
79 ret void
80}
81
82!0 = metadata !{metadata !"branch_weights", i32 3, i32 5}
83!1 = metadata !{metadata !"branch_weights", i32 1, i32 1}
84!2 = metadata !{metadata !"branch_weights", i32 1, i32 2}
85
86; CHECK: !0 = metadata !{metadata !"branch_weights", i32 5, i32 11}
87; CHECK: !1 = metadata !{metadata !"branch_weights", i32 1, i32 5}
88; CHECK-NOT: !2