• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt < %s -O2 -inlinedefault-threshold=100 -S | FileCheck %s
2
3; Check that the inlinedefault-threshold does not alter the inline threshold
4; for optsize or minsize functions
5
6@a = global i32 4
7
8define i32 @inner() {
9  call void @extern()
10  %a1 = load volatile i32, i32* @a
11  %x1 = add i32 %a1,  %a1
12  ret i32 %x1
13}
14
15define i32 @inner2() {
16  call void @extern()
17  %a1 = load volatile i32, i32* @a
18  %x1 = add i32 %a1,  %a1
19  %a2 = load volatile i32, i32* @a
20  %x2 = add i32 %x1, %a2
21  %a3 = load volatile i32, i32* @a
22  %x3 = add i32 %x2, %a3
23  %a4 = load volatile i32, i32* @a
24  %x4 = add i32 %x3, %a4
25  %a5 = load volatile i32, i32* @a
26  %x5 = add i32 %x3, %a5
27  %a6 = load volatile i32, i32* @a
28  %x6 = add i32 %x5, %a6
29  %a7 = load volatile i32, i32* @a
30  %x7 = add i32 %x6, %a7
31  %a8 = load volatile i32, i32* @a
32  %x8 = add i32 %x7, %a8
33  ret i32 %x8
34}
35
36define i32 @inner3() {
37  call void @extern()
38  %a1 = load volatile i32, i32* @a
39  %x1 = add i32 %a1,  %a1
40  %a2 = load volatile i32, i32* @a
41  %x2 = add i32 %x1, %a2
42  %a3 = load volatile i32, i32* @a
43  %x3 = add i32 %x2, %a3
44  %a4 = load volatile i32, i32* @a
45  %x4 = add i32 %x3, %a4
46  %a5 = load volatile i32, i32* @a
47  %x5 = add i32 %x4, %a5
48  %a6 = load volatile i32, i32* @a
49  %x6 = add i32 %x5, %a6
50  %a7 = load volatile i32, i32* @a
51  %x7 = add i32 %x6, %a7
52  %a8 = load volatile i32, i32* @a
53  %x8 = add i32 %x7, %a8
54  %a9 = load volatile i32, i32* @a
55  %x9 = add i32 %x8, %a9
56  %a10 = load volatile i32, i32* @a
57  %x10 = add i32 %x9, %a10
58  %a11 = load volatile i32, i32* @a
59  %x11 = add i32 %x10, %a11
60  %a12 = load volatile i32, i32* @a
61  %x12 = add i32 %x11, %a12
62  %a13 = load volatile i32, i32* @a
63  %x13 = add i32 %x12, %a13
64  %a14 = load volatile i32, i32* @a
65  %x14 = add i32 %x13, %a14
66  %a15 = load volatile i32, i32* @a
67  %x15 = add i32 %x14, %a15
68  ret i32 %x15
69}
70
71define i32 @outer() optsize {
72; CHECK-LABEL: @outer
73; CHECK-NOT: call i32 @inner()
74   %r = call i32 @inner()
75   ret i32 %r
76}
77
78define i32 @outer2() optsize {
79; CHECK-LABEL: @outer2
80; CHECK: call i32 @inner2()
81   %r = call i32 @inner2()
82   ret i32 %r
83}
84
85define i32 @outer3() minsize {
86; CHECK-LABEL: @outer3
87; CHECK: call i32 @inner()
88   %r = call i32 @inner()
89   ret i32 %r
90}
91
92define i32 @outer4() {
93; CHECK-LABEL: @outer4
94; CHECK-NOT: call i32 @inner()
95   %r = call i32 @inner()
96   ret i32 %r
97}
98
99define i32 @outer5() {
100; CHECK-LABEL: @outer5
101; CHECK-NOT: call i32 @inner2()
102   %r = call i32 @inner2()
103   ret i32 %r
104}
105
106define i32 @outer6() {
107; CHECK-LABEL: @outer6
108; CHECK: call i32 @inner3()
109   %r = call i32 @inner3()
110   ret i32 %r
111}
112
113declare void @extern()
114