• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; REQUIRES: asserts
2; RUN: opt -hotcoldsplit -debug-only=hotcoldsplit -S < %s -o /dev/null 2>&1 | FileCheck %s
3
4declare void @sink() cold
5
6; CHECK-LABEL: Outlining in one_non_region_successor
7define void @one_non_region_successor(i32 %arg) {
8entry:
9  br i1 undef, label %cold1, label %exit
10
11cold1:
12  ; CHECK: Applying penalty for: 1 non-region successor
13  call void @sink()
14  br i1 undef, label %cold2, label %cold3
15
16cold2:
17  br i1 undef, label %cold4, label %exit
18
19cold3:
20  br i1 undef, label %cold4, label %exit
21
22cold4:
23  unreachable
24
25exit:
26  ret void
27}
28
29; CHECK-LABEL: Outlining in two_non_region_successor
30define void @two_non_region_successors(i32 %arg) {
31entry:
32  br i1 undef, label %cold1, label %exit1
33
34cold1:
35  ; CHECK: Applying penalty for: 2 non-region successors
36  call void @sink()
37  br i1 undef, label %cold2, label %cold3
38
39cold2:
40  br i1 undef, label %cold4, label %exit1
41
42cold3:
43  br i1 undef, label %cold4, label %exit2
44
45cold4:
46  unreachable
47
48exit1:
49  br label %exit2
50
51exit2:
52  ret void
53}
54