9
9
define void @trivial () {
10
10
; RV32-LABEL: trivial:
11
11
; RV32: # %bb.0:
12
- ; RV32-NEXT: .cfi_def_cfa_offset 0
13
12
; RV32-NEXT: ret
14
13
;
15
14
; RV64-LABEL: trivial:
16
15
; RV64: # %bb.0:
17
- ; RV64-NEXT: .cfi_def_cfa_offset 0
18
16
; RV64-NEXT: ret
19
17
;
20
18
; RV32-WITHFP-LABEL: trivial:
@@ -28,12 +26,8 @@ define void @trivial() {
28
26
; RV32-WITHFP-NEXT: addi s0, sp, 16
29
27
; RV32-WITHFP-NEXT: .cfi_def_cfa s0, 0
30
28
; RV32-WITHFP-NEXT: lw s0, 8(sp)
31
- ; RV32-WITHFP-NEXT: .cfi_def_cfa sp, 16
32
29
; RV32-WITHFP-NEXT: lw ra, 12(sp)
33
- ; RV32-WITHFP-NEXT: .cfi_restore ra
34
- ; RV32-WITHFP-NEXT: .cfi_restore s0
35
30
; RV32-WITHFP-NEXT: addi sp, sp, 16
36
- ; RV32-WITHFP-NEXT: .cfi_def_cfa_offset 0
37
31
; RV32-WITHFP-NEXT: ret
38
32
;
39
33
; RV64-WITHFP-LABEL: trivial:
@@ -47,12 +41,8 @@ define void @trivial() {
47
41
; RV64-WITHFP-NEXT: addi s0, sp, 16
48
42
; RV64-WITHFP-NEXT: .cfi_def_cfa s0, 0
49
43
; RV64-WITHFP-NEXT: ld s0, 0(sp)
50
- ; RV64-WITHFP-NEXT: .cfi_def_cfa sp, 16
51
44
; RV64-WITHFP-NEXT: ld ra, 8(sp)
52
- ; RV64-WITHFP-NEXT: .cfi_restore ra
53
- ; RV64-WITHFP-NEXT: .cfi_restore s0
54
45
; RV64-WITHFP-NEXT: addi sp, sp, 16
55
- ; RV64-WITHFP-NEXT: .cfi_def_cfa_offset 0
56
46
; RV64-WITHFP-NEXT: ret
57
47
ret void
58
48
}
@@ -75,12 +65,8 @@ define void @stack_alloc(i32 signext %size) {
75
65
; RV32-NEXT: call callee_with_args
76
66
; RV32-NEXT: addi sp, s0, -16
77
67
; RV32-NEXT: lw s0, 8(sp)
78
- ; RV32-NEXT: .cfi_def_cfa sp, 16
79
68
; RV32-NEXT: lw ra, 12(sp)
80
- ; RV32-NEXT: .cfi_restore ra
81
- ; RV32-NEXT: .cfi_restore s0
82
69
; RV32-NEXT: addi sp, sp, 16
83
- ; RV32-NEXT: .cfi_def_cfa_offset 0
84
70
; RV32-NEXT: ret
85
71
;
86
72
; RV64-LABEL: stack_alloc:
@@ -105,12 +91,8 @@ define void @stack_alloc(i32 signext %size) {
105
91
; RV64-NEXT: call callee_with_args
106
92
; RV64-NEXT: addi sp, s0, -16
107
93
; RV64-NEXT: ld s0, 0(sp)
108
- ; RV64-NEXT: .cfi_def_cfa sp, 16
109
94
; RV64-NEXT: ld ra, 8(sp)
110
- ; RV64-NEXT: .cfi_restore ra
111
- ; RV64-NEXT: .cfi_restore s0
112
95
; RV64-NEXT: addi sp, sp, 16
113
- ; RV64-NEXT: .cfi_def_cfa_offset 0
114
96
; RV64-NEXT: ret
115
97
;
116
98
; RV32-WITHFP-LABEL: stack_alloc:
@@ -130,12 +112,8 @@ define void @stack_alloc(i32 signext %size) {
130
112
; RV32-WITHFP-NEXT: call callee_with_args
131
113
; RV32-WITHFP-NEXT: addi sp, s0, -16
132
114
; RV32-WITHFP-NEXT: lw s0, 8(sp)
133
- ; RV32-WITHFP-NEXT: .cfi_def_cfa sp, 16
134
115
; RV32-WITHFP-NEXT: lw ra, 12(sp)
135
- ; RV32-WITHFP-NEXT: .cfi_restore ra
136
- ; RV32-WITHFP-NEXT: .cfi_restore s0
137
116
; RV32-WITHFP-NEXT: addi sp, sp, 16
138
- ; RV32-WITHFP-NEXT: .cfi_def_cfa_offset 0
139
117
; RV32-WITHFP-NEXT: ret
140
118
;
141
119
; RV64-WITHFP-LABEL: stack_alloc:
@@ -160,21 +138,15 @@ define void @stack_alloc(i32 signext %size) {
160
138
; RV64-WITHFP-NEXT: call callee_with_args
161
139
; RV64-WITHFP-NEXT: addi sp, s0, -16
162
140
; RV64-WITHFP-NEXT: ld s0, 0(sp)
163
- ; RV64-WITHFP-NEXT: .cfi_def_cfa sp, 16
164
141
; RV64-WITHFP-NEXT: ld ra, 8(sp)
165
- ; RV64-WITHFP-NEXT: .cfi_restore ra
166
- ; RV64-WITHFP-NEXT: .cfi_restore s0
167
142
; RV64-WITHFP-NEXT: addi sp, sp, 16
168
- ; RV64-WITHFP-NEXT: .cfi_def_cfa_offset 0
169
143
; RV64-WITHFP-NEXT: ret
170
144
entry:
171
145
%0 = alloca i8 , i32 %size , align 16
172
146
call void @callee_with_args (i8* nonnull %0 ) #2
173
147
ret void
174
148
}
175
149
176
- ; FIXME: fix use of .cfi_restore with wrong CFAs
177
-
178
150
define void @branch_and_tail_call (i1 %a ) {
179
151
; RV32-LABEL: branch_and_tail_call:
180
152
; RV32: # %bb.0:
@@ -186,16 +158,12 @@ define void @branch_and_tail_call(i1 %a) {
186
158
; RV32-NEXT: beqz a0, .LBB2_2
187
159
; RV32-NEXT: # %bb.1: # %blue_pill
188
160
; RV32-NEXT: lw ra, 12(sp)
189
- ; RV32-NEXT: .cfi_restore ra
190
161
; RV32-NEXT: addi sp, sp, 16
191
- ; RV32-NEXT: .cfi_def_cfa_offset 0
192
162
; RV32-NEXT: tail callee1
193
163
; RV32-NEXT: .LBB2_2: # %red_pill
194
164
; RV32-NEXT: call callee2
195
165
; RV32-NEXT: lw ra, 12(sp)
196
- ; RV32-NEXT: .cfi_restore ra
197
166
; RV32-NEXT: addi sp, sp, 16
198
- ; RV32-NEXT: .cfi_def_cfa_offset 0
199
167
; RV32-NEXT: ret
200
168
;
201
169
; RV64-LABEL: branch_and_tail_call:
@@ -208,16 +176,12 @@ define void @branch_and_tail_call(i1 %a) {
208
176
; RV64-NEXT: beqz a0, .LBB2_2
209
177
; RV64-NEXT: # %bb.1: # %blue_pill
210
178
; RV64-NEXT: ld ra, 8(sp)
211
- ; RV64-NEXT: .cfi_restore ra
212
179
; RV64-NEXT: addi sp, sp, 16
213
- ; RV64-NEXT: .cfi_def_cfa_offset 0
214
180
; RV64-NEXT: tail callee1
215
181
; RV64-NEXT: .LBB2_2: # %red_pill
216
182
; RV64-NEXT: call callee2
217
183
; RV64-NEXT: ld ra, 8(sp)
218
- ; RV64-NEXT: .cfi_restore ra
219
184
; RV64-NEXT: addi sp, sp, 16
220
- ; RV64-NEXT: .cfi_def_cfa_offset 0
221
185
; RV64-NEXT: ret
222
186
;
223
187
; RV32-WITHFP-LABEL: branch_and_tail_call:
@@ -234,22 +198,14 @@ define void @branch_and_tail_call(i1 %a) {
234
198
; RV32-WITHFP-NEXT: beqz a0, .LBB2_2
235
199
; RV32-WITHFP-NEXT: # %bb.1: # %blue_pill
236
200
; RV32-WITHFP-NEXT: lw s0, 8(sp)
237
- ; RV32-WITHFP-NEXT: .cfi_def_cfa sp, 16
238
201
; RV32-WITHFP-NEXT: lw ra, 12(sp)
239
- ; RV32-WITHFP-NEXT: .cfi_restore ra
240
- ; RV32-WITHFP-NEXT: .cfi_restore s0
241
202
; RV32-WITHFP-NEXT: addi sp, sp, 16
242
- ; RV32-WITHFP-NEXT: .cfi_def_cfa_offset 0
243
203
; RV32-WITHFP-NEXT: tail callee1
244
204
; RV32-WITHFP-NEXT: .LBB2_2: # %red_pill
245
205
; RV32-WITHFP-NEXT: call callee2
246
206
; RV32-WITHFP-NEXT: lw s0, 8(sp)
247
- ; RV32-WITHFP-NEXT: .cfi_def_cfa sp, 16
248
207
; RV32-WITHFP-NEXT: lw ra, 12(sp)
249
- ; RV32-WITHFP-NEXT: .cfi_restore ra
250
- ; RV32-WITHFP-NEXT: .cfi_restore s0
251
208
; RV32-WITHFP-NEXT: addi sp, sp, 16
252
- ; RV32-WITHFP-NEXT: .cfi_def_cfa_offset 0
253
209
; RV32-WITHFP-NEXT: ret
254
210
;
255
211
; RV64-WITHFP-LABEL: branch_and_tail_call:
@@ -266,22 +222,14 @@ define void @branch_and_tail_call(i1 %a) {
266
222
; RV64-WITHFP-NEXT: beqz a0, .LBB2_2
267
223
; RV64-WITHFP-NEXT: # %bb.1: # %blue_pill
268
224
; RV64-WITHFP-NEXT: ld s0, 0(sp)
269
- ; RV64-WITHFP-NEXT: .cfi_def_cfa sp, 16
270
225
; RV64-WITHFP-NEXT: ld ra, 8(sp)
271
- ; RV64-WITHFP-NEXT: .cfi_restore ra
272
- ; RV64-WITHFP-NEXT: .cfi_restore s0
273
226
; RV64-WITHFP-NEXT: addi sp, sp, 16
274
- ; RV64-WITHFP-NEXT: .cfi_def_cfa_offset 0
275
227
; RV64-WITHFP-NEXT: tail callee1
276
228
; RV64-WITHFP-NEXT: .LBB2_2: # %red_pill
277
229
; RV64-WITHFP-NEXT: call callee2
278
230
; RV64-WITHFP-NEXT: ld s0, 0(sp)
279
- ; RV64-WITHFP-NEXT: .cfi_def_cfa sp, 16
280
231
; RV64-WITHFP-NEXT: ld ra, 8(sp)
281
- ; RV64-WITHFP-NEXT: .cfi_restore ra
282
- ; RV64-WITHFP-NEXT: .cfi_restore s0
283
232
; RV64-WITHFP-NEXT: addi sp, sp, 16
284
- ; RV64-WITHFP-NEXT: .cfi_def_cfa_offset 0
285
233
; RV64-WITHFP-NEXT: ret
286
234
br i1 %a , label %blue_pill , label %red_pill
287
235
blue_pill:
0 commit comments