blob: 195316a9121f9e247db5757328dadda6924e581b [file] [log] [blame]
Teresa Johnson7f37a802020-02-04 10:37:53 -08001; 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()