xref: /llvm-project/llvm/test/Transforms/Inline/exponential-deferred-inlining.ll (revision e5369823bc0655806469724335d0ca5a4c17d8c7)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes=inline < %s | FileCheck %s
3
4declare void @foo()
5
6define internal void @f1() {
7  call void @foo()
8  call void @foo()
9  call void @foo()
10  call void @foo()
11  call void @foo()
12  call void @foo()
13  call void @foo()
14  call void @foo()
15  call void @foo()
16  call void @foo()
17  call void @foo()
18  call void @foo()
19  ret void
20}
21
22define internal void @f2() {
23; CHECK-LABEL: @f2(
24; CHECK-NEXT:    call void @foo()
25; CHECK-NEXT:    call void @foo()
26; CHECK-NEXT:    call void @foo()
27; CHECK-NEXT:    call void @foo()
28; CHECK-NEXT:    call void @foo()
29; CHECK-NEXT:    call void @foo()
30; CHECK-NEXT:    call void @foo()
31; CHECK-NEXT:    call void @foo()
32; CHECK-NEXT:    call void @foo()
33; CHECK-NEXT:    call void @foo()
34; CHECK-NEXT:    call void @foo()
35; CHECK-NEXT:    call void @foo()
36; CHECK-NEXT:    call void @foo()
37; CHECK-NEXT:    call void @foo()
38; CHECK-NEXT:    call void @foo()
39; CHECK-NEXT:    call void @foo()
40; CHECK-NEXT:    call void @foo()
41; CHECK-NEXT:    call void @foo()
42; CHECK-NEXT:    call void @foo()
43; CHECK-NEXT:    call void @foo()
44; CHECK-NEXT:    call void @foo()
45; CHECK-NEXT:    call void @foo()
46; CHECK-NEXT:    call void @foo()
47; CHECK-NEXT:    call void @foo()
48; CHECK-NEXT:    call void @foo()
49; CHECK-NEXT:    call void @foo()
50; CHECK-NEXT:    call void @foo()
51; CHECK-NEXT:    call void @foo()
52; CHECK-NEXT:    call void @foo()
53; CHECK-NEXT:    call void @foo()
54; CHECK-NEXT:    call void @foo()
55; CHECK-NEXT:    call void @foo()
56; CHECK-NEXT:    call void @foo()
57; CHECK-NEXT:    call void @foo()
58; CHECK-NEXT:    call void @foo()
59; CHECK-NEXT:    call void @foo()
60; CHECK-NEXT:    ret void
61;
62  call void @f1()
63  call void @f1()
64  call void @f1()
65  ret void
66}
67
68define internal void @f3() {
69  call void @f2()
70  call void @f2()
71  ret void
72}
73
74define internal void @f4() {
75  call void @f3()
76  call void @f3()
77  ret void
78}
79
80define internal void @f5() {
81  call void @f4()
82  call void @f4()
83  ret void
84}
85
86define internal void @f6() {
87; CHECK-LABEL: @f6(
88; CHECK-NEXT:    call void @f2()
89; CHECK-NEXT:    call void @f2()
90; CHECK-NEXT:    call void @f2()
91; CHECK-NEXT:    call void @f2()
92; CHECK-NEXT:    call void @f2()
93; CHECK-NEXT:    call void @f2()
94; CHECK-NEXT:    call void @f2()
95; CHECK-NEXT:    call void @f2()
96; CHECK-NEXT:    call void @f2()
97; CHECK-NEXT:    call void @f2()
98; CHECK-NEXT:    call void @f2()
99; CHECK-NEXT:    call void @f2()
100; CHECK-NEXT:    call void @f2()
101; CHECK-NEXT:    call void @f2()
102; CHECK-NEXT:    call void @f2()
103; CHECK-NEXT:    call void @f2()
104; CHECK-NEXT:    ret void
105;
106  call void @f5()
107  call void @f5()
108  ret void
109}
110
111define void @f7() {
112; CHECK-LABEL: @f7(
113; CHECK-NEXT:    call void @f6()
114; CHECK-NEXT:    call void @f6()
115; CHECK-NEXT:    ret void
116;
117  call void @f6()
118  call void @f6()
119  ret void
120}
121