xref: /aosp_15_r20/external/llvm/test/Transforms/Inline/inline-threshold.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; Test that -inline-threshold overrides thresholds derived from opt levels.
2*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -O2 -inline-threshold=500 -S  | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -O3 -inline-threshold=500 -S  | FileCheck %s
4*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -Os -inline-threshold=500 -S  | FileCheck %s
5*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -Oz -inline-threshold=500 -S  | FileCheck %s
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker@a = global i32 4
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Workerdefine i32 @simpleFunction(i32 %a) #0 {
10*9880d681SAndroid Build Coastguard Workerentry:
11*9880d681SAndroid Build Coastguard Worker  %a1 = load volatile i32, i32* @a
12*9880d681SAndroid Build Coastguard Worker  %x1 = add i32 %a1,  %a1
13*9880d681SAndroid Build Coastguard Worker  %cmp = icmp eq i32 %a1, 0
14*9880d681SAndroid Build Coastguard Worker  br i1 %cmp, label %if.then, label %if.else
15*9880d681SAndroid Build Coastguard Workerif.then:
16*9880d681SAndroid Build Coastguard Worker  %a2 = load volatile i32, i32* @a
17*9880d681SAndroid Build Coastguard Worker  %x2_0 = add i32 %x1, %a2
18*9880d681SAndroid Build Coastguard Worker  br label %if.else
19*9880d681SAndroid Build Coastguard Workerif.else:
20*9880d681SAndroid Build Coastguard Worker  %x2 = phi i32 [ %x1, %entry ], [ %x2_0, %if.then ]
21*9880d681SAndroid Build Coastguard Worker  %a3 = load volatile i32, i32* @a
22*9880d681SAndroid Build Coastguard Worker  %x3 = add i32 %x2, %a3
23*9880d681SAndroid Build Coastguard Worker  %a4 = load volatile i32, i32* @a
24*9880d681SAndroid Build Coastguard Worker  %x4 = add i32 %x3, %a4
25*9880d681SAndroid Build Coastguard Worker  %a5 = load volatile i32, i32* @a
26*9880d681SAndroid Build Coastguard Worker  %x5 = add i32 %x4, %a5
27*9880d681SAndroid Build Coastguard Worker  %a6 = load volatile i32, i32* @a
28*9880d681SAndroid Build Coastguard Worker  %x6 = add i32 %x5, %a6
29*9880d681SAndroid Build Coastguard Worker  %a7 = load volatile i32, i32* @a
30*9880d681SAndroid Build Coastguard Worker  %x7 = add i32 %x6, %a7
31*9880d681SAndroid Build Coastguard Worker  %a8 = load volatile i32, i32* @a
32*9880d681SAndroid Build Coastguard Worker  %x8 = add i32 %x7, %a8
33*9880d681SAndroid Build Coastguard Worker  %a9 = load volatile i32, i32* @a
34*9880d681SAndroid Build Coastguard Worker  %x9 = add i32 %x8, %a9
35*9880d681SAndroid Build Coastguard Worker  %a10 = load volatile i32, i32* @a
36*9880d681SAndroid Build Coastguard Worker  %x10 = add i32 %x9, %a10
37*9880d681SAndroid Build Coastguard Worker  %a11 = load volatile i32, i32* @a
38*9880d681SAndroid Build Coastguard Worker  %x11 = add i32 %x10, %a11
39*9880d681SAndroid Build Coastguard Worker  %a12 = load volatile i32, i32* @a
40*9880d681SAndroid Build Coastguard Worker  %x12 = add i32 %x11, %a12
41*9880d681SAndroid Build Coastguard Worker  %a13 = load volatile i32, i32* @a
42*9880d681SAndroid Build Coastguard Worker  %x13 = add i32 %x12, %a13
43*9880d681SAndroid Build Coastguard Worker  %a14 = load volatile i32, i32* @a
44*9880d681SAndroid Build Coastguard Worker  %x14 = add i32 %x13, %a14
45*9880d681SAndroid Build Coastguard Worker  %a15 = load volatile i32, i32* @a
46*9880d681SAndroid Build Coastguard Worker  %x15 = add i32 %x14, %a15
47*9880d681SAndroid Build Coastguard Worker  %a16 = load volatile i32, i32* @a
48*9880d681SAndroid Build Coastguard Worker  %x16 = add i32 %x15, %a16
49*9880d681SAndroid Build Coastguard Worker  %a17 = load volatile i32, i32* @a
50*9880d681SAndroid Build Coastguard Worker  %x17 = add i32 %x16, %a17
51*9880d681SAndroid Build Coastguard Worker  %a18 = load volatile i32, i32* @a
52*9880d681SAndroid Build Coastguard Worker  %x18 = add i32 %x17, %a18
53*9880d681SAndroid Build Coastguard Worker  %a19 = load volatile i32, i32* @a
54*9880d681SAndroid Build Coastguard Worker  %x19 = add i32 %x18, %a19
55*9880d681SAndroid Build Coastguard Worker  %a20 = load volatile i32, i32* @a
56*9880d681SAndroid Build Coastguard Worker  %x20 = add i32 %x19, %a20
57*9880d681SAndroid Build Coastguard Worker  %a21 = load volatile i32, i32* @a
58*9880d681SAndroid Build Coastguard Worker  %x21 = add i32 %x20, %a21
59*9880d681SAndroid Build Coastguard Worker  %a22 = load volatile i32, i32* @a
60*9880d681SAndroid Build Coastguard Worker  %x22 = add i32 %x21, %a22
61*9880d681SAndroid Build Coastguard Worker  %a23 = load volatile i32, i32* @a
62*9880d681SAndroid Build Coastguard Worker  %x23 = add i32 %x22, %a23
63*9880d681SAndroid Build Coastguard Worker  %a24 = load volatile i32, i32* @a
64*9880d681SAndroid Build Coastguard Worker  %x24 = add i32 %x23, %a24
65*9880d681SAndroid Build Coastguard Worker  %a25 = load volatile i32, i32* @a
66*9880d681SAndroid Build Coastguard Worker  %x25 = add i32 %x24, %a25
67*9880d681SAndroid Build Coastguard Worker  %a26 = load volatile i32, i32* @a
68*9880d681SAndroid Build Coastguard Worker  %x26 = add i32 %x25, %a26
69*9880d681SAndroid Build Coastguard Worker  %a27 = load volatile i32, i32* @a
70*9880d681SAndroid Build Coastguard Worker  %x27 = add i32 %x26, %a27
71*9880d681SAndroid Build Coastguard Worker  %a28 = load volatile i32, i32* @a
72*9880d681SAndroid Build Coastguard Worker  %x28 = add i32 %x27, %a28
73*9880d681SAndroid Build Coastguard Worker  %a29 = load volatile i32, i32* @a
74*9880d681SAndroid Build Coastguard Worker  %x29 = add i32 %x28, %a29
75*9880d681SAndroid Build Coastguard Worker  %add = add i32 %x29, %a
76*9880d681SAndroid Build Coastguard Worker  ret i32 %add
77*9880d681SAndroid Build Coastguard Worker}
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone uwtable
80*9880d681SAndroid Build Coastguard Workerdefine i32 @bar(i32 %a) #0 {
81*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @bar
82*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: call i32 @simpleFunction(i32 6)
83*9880d681SAndroid Build Coastguard Worker; CHECK: ret
84*9880d681SAndroid Build Coastguard Workerentry:
85*9880d681SAndroid Build Coastguard Worker  %i = tail call i32 @simpleFunction(i32 6)
86*9880d681SAndroid Build Coastguard Worker  ret i32 %i
87*9880d681SAndroid Build Coastguard Worker}
88*9880d681SAndroid Build Coastguard Worker
89*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind readnone uwtable }
90