Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / HotColdSplit / apply-successor-penalty.ll
blob336b415d83433c3760f4d93e955d4e8c8d830854
1 ; REQUIRES: asserts
2 ; RUN: opt -passes=hotcoldsplit -debug-only=hotcoldsplit -hotcoldsplit-threshold=2 -S < %s -o /dev/null 2>&1 | FileCheck %s
4 declare void @sink() cold
6 ; CHECK-LABEL: Outlining in one_non_region_successor
7 define void @one_non_region_successor(i32 %arg) {
8 entry:
9   br i1 undef, label %cold1, label %exit
11 cold1:
12   ; CHECK: Applying penalty for splitting: 2
13   ; CHECK-NEXT: Applying penalty for: 0 params
14   ; CHECK-NEXT: Applying penalty for: 0 outputs/split phis
15   ; CHECK-NEXT: penalty = 2
16   call void @sink()
17   br i1 undef, label %cold2, label %cold3
19 cold2:
20   br i1 undef, label %cold4, label %exit
22 cold3:
23   br i1 undef, label %cold4, label %exit
25 cold4:
26   unreachable
28 exit:
29   ret void
32 ; CHECK-LABEL: Outlining in two_non_region_successor
33 define void @two_non_region_successors(i32 %arg) {
34 entry:
35   br i1 undef, label %cold1, label %exit1
37 cold1:
38   ; CHECK: Applying penalty for splitting: 2
39   ; CHECK-NEXT: Applying penalty for: 0 params
40   ; CHECK-NEXT: Applying penalty for: 0 outputs/split phis
41   ; CHECK-NEXT: Applying penalty for: 2 non-region successors
42   ; CHECK-NEXT: penalty = 3
43   call void @sink()
44   br i1 undef, label %cold2, label %cold3
46 cold2:
47   br i1 undef, label %cold4, label %exit1
49 cold3:
50   br i1 undef, label %cold4, label %exit2
52 cold4:
53   unreachable
55 exit1:
56   br label %exit2
58 exit2:
59   ret void