1 ; RUN: opt < %s -inline -S -inlinecold-threshold=75 | FileCheck %s
3 ; Test that functions with attribute Cold are not inlined while the
4 ; same function without attribute Cold will be inlined.
8 ; This function should be larger than the cold threshold (75), but smaller
9 ; than the regular threshold.
10 ; Function Attrs: nounwind readnone uwtable
11 define i32 @simpleFunction(i32 %a) #0 {
13 %a1 = load volatile i32* @a
14 %x1 = add i32 %a1, %a1
15 %a2 = load volatile i32* @a
16 %x2 = add i32 %x1, %a2
17 %a3 = load volatile i32* @a
18 %x3 = add i32 %x2, %a3
19 %a4 = load volatile i32* @a
20 %x4 = add i32 %x3, %a4
21 %a5 = load volatile i32* @a
22 %x5 = add i32 %x4, %a5
23 %a6 = load volatile i32* @a
24 %x6 = add i32 %x5, %a6
25 %a7 = load volatile i32* @a
26 %x7 = add i32 %x6, %a6
27 %a8 = load volatile i32* @a
28 %x8 = add i32 %x7, %a8
29 %a9 = load volatile i32* @a
30 %x9 = add i32 %x8, %a9
31 %a10 = load volatile i32* @a
32 %x10 = add i32 %x9, %a10
33 %a11 = load volatile i32* @a
34 %x11 = add i32 %x10, %a11
35 %a12 = load volatile i32* @a
36 %x12 = add i32 %x11, %a12
37 %add = add i32 %x12, %a
41 ; Function Attrs: nounwind cold readnone uwtable
42 define i32 @ColdFunction(i32 %a) #1 {
43 ; CHECK-LABEL: @ColdFunction
46 %a1 = load volatile i32* @a
47 %x1 = add i32 %a1, %a1
48 %a2 = load volatile i32* @a
49 %x2 = add i32 %x1, %a2
50 %a3 = load volatile i32* @a
51 %x3 = add i32 %x2, %a3
52 %a4 = load volatile i32* @a
53 %x4 = add i32 %x3, %a4
54 %a5 = load volatile i32* @a
55 %x5 = add i32 %x4, %a5
56 %a6 = load volatile i32* @a
57 %x6 = add i32 %x5, %a6
58 %a7 = load volatile i32* @a
59 %x7 = add i32 %x6, %a6
60 %a8 = load volatile i32* @a
61 %x8 = add i32 %x7, %a8
62 %a9 = load volatile i32* @a
63 %x9 = add i32 %x8, %a9
64 %a10 = load volatile i32* @a
65 %x10 = add i32 %x9, %a10
66 %a11 = load volatile i32* @a
67 %x11 = add i32 %x10, %a11
68 %a12 = load volatile i32* @a
69 %x12 = add i32 %x11, %a12
70 %add = add i32 %x12, %a
74 ; Function Attrs: nounwind readnone uwtable
75 define i32 @bar(i32 %a) #0 {
77 ; CHECK: call i32 @ColdFunction(i32 5)
78 ; CHECK-NOT: call i32 @simpleFunction(i32 6)
81 %0 = tail call i32 @ColdFunction(i32 5)
82 %1 = tail call i32 @simpleFunction(i32 6)
87 attributes #0 = { nounwind readnone uwtable }
88 attributes #1 = { nounwind cold readnone uwtable }