blob: 72a785bad28fa7abc4475b1cf245d0aedf216e30 [file] [log] [blame]
Matthias Braun8aaa3682017-04-19 21:11:44 +00001# RUN: llc -o - %s -mtriple=thumbv7-- -run-pass=stack-protector -run-pass=prologepilog | FileCheck %s
2---
3# This should trigger an emergency spill in the register scavenger because the
4# frame offset into the large argument is too large.
5# CHECK-LABEL: name: func0
Puyan Lotfi43e94b12018-01-31 22:04:26 +00006# CHECK: t2STRi12 killed [[SPILLED:\$r[0-9]+]], $sp, 0, 14, $noreg :: (store 4 into %stack.0)
7# CHECK: [[SPILLED]] = t2ADDri killed $sp, 4096, 14, $noreg, $noreg
8# CHECK: $sp = t2LDRi12 killed [[SPILLED]], 40, 14, $noreg :: (load 4)
9# CHECK: [[SPILLED]] = t2LDRi12 $sp, 0, 14, $noreg :: (load 4 from %stack.0)
Matthias Braun8aaa3682017-04-19 21:11:44 +000010name: func0
11tracksRegLiveness: true
12fixedStack:
13 - { id: 0, offset: 4084, size: 4, alignment: 4, isImmutable: true,
14 isAliased: false }
15 - { id: 1, offset: -12, size: 4096, alignment: 4, isImmutable: false,
16 isAliased: false }
17body: |
18 bb.0:
Puyan Lotfi43e94b12018-01-31 22:04:26 +000019 $r0 = IMPLICIT_DEF
20 $r1 = IMPLICIT_DEF
21 $r2 = IMPLICIT_DEF
22 $r3 = IMPLICIT_DEF
23 $r4 = IMPLICIT_DEF
24 $r5 = IMPLICIT_DEF
25 $r6 = IMPLICIT_DEF
26 $r7 = IMPLICIT_DEF
27 $r8 = IMPLICIT_DEF
28 $r9 = IMPLICIT_DEF
29 $r10 = IMPLICIT_DEF
30 $r11 = IMPLICIT_DEF
31 $r12 = IMPLICIT_DEF
32 $lr = IMPLICIT_DEF
Matthias Braun8aaa3682017-04-19 21:11:44 +000033
Puyan Lotfi43e94b12018-01-31 22:04:26 +000034 $sp = t2LDRi12 %fixed-stack.0, 0, 14, $noreg :: (load 4)
Matthias Braun8aaa3682017-04-19 21:11:44 +000035
Puyan Lotfi43e94b12018-01-31 22:04:26 +000036 KILL $r0
37 KILL $r1
38 KILL $r2
39 KILL $r3
40 KILL $r4
41 KILL $r5
42 KILL $r6
43 KILL $r7
44 KILL $r8
45 KILL $r9
46 KILL $r10
47 KILL $r11
48 KILL $r12
49 KILL $lr
Matthias Braun8aaa3682017-04-19 21:11:44 +000050...
51---
52# This should not trigger an emergency spill yet.
53# CHECK-LABEL: name: func1
54# CHECK-NOT: t2STRi12
55# CHECK-NOT: t2ADDri
Puyan Lotfi43e94b12018-01-31 22:04:26 +000056# CHECK: $r11 = t2LDRi12 $sp, 4092, 14, $noreg :: (load 4)
Matthias Braun8aaa3682017-04-19 21:11:44 +000057# CHECK-NOT: t2LDRi12
58name: func1
59tracksRegLiveness: true
60fixedStack:
61 - { id: 0, offset: 4044, size: 4, alignment: 4, isImmutable: true,
62 isAliased: false }
63 - { id: 1, offset: -12, size: 4056, alignment: 4, isImmutable: false,
64 isAliased: false }
65body: |
66 bb.0:
Puyan Lotfi43e94b12018-01-31 22:04:26 +000067 $r0 = IMPLICIT_DEF
68 $r1 = IMPLICIT_DEF
69 $r2 = IMPLICIT_DEF
70 $r3 = IMPLICIT_DEF
71 $r4 = IMPLICIT_DEF
72 $r5 = IMPLICIT_DEF
73 $r6 = IMPLICIT_DEF
74 $r8 = IMPLICIT_DEF
75 $r9 = IMPLICIT_DEF
76 $r10 = IMPLICIT_DEF
77 $r11 = IMPLICIT_DEF
78 $r12 = IMPLICIT_DEF
79 $lr = IMPLICIT_DEF
Matthias Braun8aaa3682017-04-19 21:11:44 +000080
Puyan Lotfi43e94b12018-01-31 22:04:26 +000081 $r11 = t2LDRi12 %fixed-stack.0, 0, 14, $noreg :: (load 4)
Matthias Braun8aaa3682017-04-19 21:11:44 +000082
Puyan Lotfi43e94b12018-01-31 22:04:26 +000083 KILL $r0
84 KILL $r1
85 KILL $r2
86 KILL $r3
87 KILL $r4
88 KILL $r5
89 KILL $r6
90 KILL $r8
91 KILL $r9
92 KILL $r10
93 KILL $r11
94 KILL $r12
95 KILL $lr
Matthias Braun8aaa3682017-04-19 21:11:44 +000096...