OLD | NEW |
1 ; This is a basic test of the alloca instruction. | 1 ; This is a basic test of the alloca instruction. |
2 | 2 |
3 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ | 3 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
4 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \ | 4 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \ |
5 ; RUN: | %if --need=target_X8632 --command FileCheck %s | 5 ; RUN: | %if --need=target_X8632 --command FileCheck %s |
6 | 6 |
7 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ | 7 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
8 ; RUN: --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \ | 8 ; RUN: --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \ |
9 ; RUN: | %if --need=target_X8632 --command FileCheck \ | 9 ; RUN: | %if --need=target_X8632 --command FileCheck \ |
10 ; RUN: --check-prefix CHECK-OPTM1 %s | 10 ; RUN: --check-prefix CHECK-OPTM1 %s |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 ; CHECK-OPTM1: sub esp,0x1a0 | 58 ; CHECK-OPTM1: sub esp,0x1a0 |
59 ; CHECK-OPTM1: mov DWORD PTR [esp],eax | 59 ; CHECK-OPTM1: mov DWORD PTR [esp],eax |
60 ; CHECK-OPTM1: call {{.*}} R_{{.*}} f1 | 60 ; CHECK-OPTM1: call {{.*}} R_{{.*}} f1 |
61 | 61 |
62 ; ARM32-LABEL: fixed_416_align_16 | 62 ; ARM32-LABEL: fixed_416_align_16 |
63 ; ARM32-OPT2: sub sp, sp, #428 | 63 ; ARM32-OPT2: sub sp, sp, #428 |
64 ; ARM32-OPTM1: sub sp, sp, #416 | 64 ; ARM32-OPTM1: sub sp, sp, #416 |
65 ; ARM32: bl {{.*}} R_{{.*}} f1 | 65 ; ARM32: bl {{.*}} R_{{.*}} f1 |
66 | 66 |
67 ; MIPS32-LABEL: fixed_416_align_16 | 67 ; MIPS32-LABEL: fixed_416_align_16 |
68 ; MIPS32-OPT2: addiu sp,sp,-440 | 68 ; MIPS32-OPT2: addiu sp,sp,-448 |
69 ; MIPS32-OPT2: addiu a0,sp,16 | 69 ; MIPS32-OPT2: addiu a0,sp,16 |
70 ; MIPS32-OPTM1: addiu sp,sp,-448 | 70 ; MIPS32-OPTM1: addiu sp,sp,-448 |
71 ; MIPS32-OPTM1: addiu [[REG:.*]],sp,16 | 71 ; MIPS32-OPTM1: addiu [[REG:.*]],sp,16 |
72 ; MIPS32-OPTM1: sw [[REG]],{{.*}} | 72 ; MIPS32-OPTM1: sw [[REG]],{{.*}} |
73 ; MIPS32-OPTM1: lw a0,{{.*}} | 73 ; MIPS32-OPTM1: lw a0,{{.*}} |
74 ; MIPS32: jal {{.*}} R_{{.*}} f1 | 74 ; MIPS32: jal {{.*}} R_{{.*}} f1 |
75 | 75 |
76 define internal void @fixed_416_align_32(i32 %n) { | 76 define internal void @fixed_416_align_32(i32 %n) { |
77 entry: | 77 entry: |
78 %array = alloca i8, i32 400, align 32 | 78 %array = alloca i8, i32 400, align 32 |
(...skipping 10 matching lines...) Expand all Loading... |
89 ; CHECK: mov DWORD PTR [esp],eax | 89 ; CHECK: mov DWORD PTR [esp],eax |
90 ; CHECK: call {{.*}} R_{{.*}} f1 | 90 ; CHECK: call {{.*}} R_{{.*}} f1 |
91 | 91 |
92 ; ARM32-LABEL: fixed_416_align_32 | 92 ; ARM32-LABEL: fixed_416_align_32 |
93 ; ARM32-OPT2: sub sp, sp, #424 | 93 ; ARM32-OPT2: sub sp, sp, #424 |
94 ; ARM32-OPTM1: sub sp, sp, #416 | 94 ; ARM32-OPTM1: sub sp, sp, #416 |
95 ; ARM32: bic sp, sp, #31 | 95 ; ARM32: bic sp, sp, #31 |
96 ; ARM32: bl {{.*}} R_{{.*}} f1 | 96 ; ARM32: bl {{.*}} R_{{.*}} f1 |
97 | 97 |
98 ; MIPS32-LABEL: fixed_416_align_32 | 98 ; MIPS32-LABEL: fixed_416_align_32 |
99 ; MIPS32-OPT2: addiu sp,sp,-440 | 99 ; MIPS32-OPT2: addiu sp,sp,-448 |
100 ; MIPS32-OPT2: addiu a0,sp,16 | 100 ; MIPS32-OPT2: addiu a0,sp,16 |
101 ; MIPS32-OPTM1: addiu sp,sp,-448 | 101 ; MIPS32-OPTM1: addiu sp,sp,-448 |
102 ; MIPS32-OPTM1: addiu [[REG:.*]],sp,16 | 102 ; MIPS32-OPTM1: addiu [[REG:.*]],sp,16 |
103 ; MIPS32-OPTM1: sw [[REG]],{{.*}} | 103 ; MIPS32-OPTM1: sw [[REG]],{{.*}} |
104 ; MIPS32-OPTM1: lw a0,{{.*}} | 104 ; MIPS32-OPTM1: lw a0,{{.*}} |
105 ; MIPS32: jal {{.*}} R_{{.*}} f1 | 105 ; MIPS32: jal {{.*}} R_{{.*}} f1 |
106 | 106 |
107 ; Show that the amount to allocate will be rounded up. | 107 ; Show that the amount to allocate will be rounded up. |
108 define internal void @fixed_351_align_16(i32 %n) { | 108 define internal void @fixed_351_align_16(i32 %n) { |
109 entry: | 109 entry: |
(...skipping 13 matching lines...) Expand all Loading... |
123 ; CHECK-OPTM1: sub esp,0x160 | 123 ; CHECK-OPTM1: sub esp,0x160 |
124 ; CHECK-OPTM1: mov DWORD PTR [esp],eax | 124 ; CHECK-OPTM1: mov DWORD PTR [esp],eax |
125 ; CHECK-OPTM1: call {{.*}} R_{{.*}} f1 | 125 ; CHECK-OPTM1: call {{.*}} R_{{.*}} f1 |
126 | 126 |
127 ; ARM32-LABEL: fixed_351_align_16 | 127 ; ARM32-LABEL: fixed_351_align_16 |
128 ; ARM32-OPT2: sub sp, sp, #364 | 128 ; ARM32-OPT2: sub sp, sp, #364 |
129 ; ARM32-OPTM1: sub sp, sp, #352 | 129 ; ARM32-OPTM1: sub sp, sp, #352 |
130 ; ARM32: bl {{.*}} R_{{.*}} f1 | 130 ; ARM32: bl {{.*}} R_{{.*}} f1 |
131 | 131 |
132 ; MIPS32-LABEL: fixed_351_align_16 | 132 ; MIPS32-LABEL: fixed_351_align_16 |
133 ; MIPS32-OPT2: addiu sp,sp,-376 | 133 ; MIPS32-OPT2: addiu sp,sp,-384 |
134 ; MIPS32-OPT2: addiu a0,sp,16 | 134 ; MIPS32-OPT2: addiu a0,sp,16 |
135 ; MIPS32-OPTM1: addiu sp,sp,-384 | 135 ; MIPS32-OPTM1: addiu sp,sp,-384 |
136 ; MIPS32-OPTM1: addiu [[REG:.*]],sp,16 | 136 ; MIPS32-OPTM1: addiu [[REG:.*]],sp,16 |
137 ; MIPS32-OPTM1: sw [[REG]],{{.*}} | 137 ; MIPS32-OPTM1: sw [[REG]],{{.*}} |
138 ; MIPS32-OPTM1: lw a0,{{.*}} | 138 ; MIPS32-OPTM1: lw a0,{{.*}} |
139 ; MIPS32: jal {{.*}} R_{{.*}} f1 | 139 ; MIPS32: jal {{.*}} R_{{.*}} f1 |
140 | 140 |
141 define internal void @fixed_351_align_32(i32 %n) { | 141 define internal void @fixed_351_align_32(i32 %n) { |
142 entry: | 142 entry: |
143 %array = alloca i8, i32 351, align 32 | 143 %array = alloca i8, i32 351, align 32 |
(...skipping 10 matching lines...) Expand all Loading... |
154 ; CHECK: mov DWORD PTR [esp],eax | 154 ; CHECK: mov DWORD PTR [esp],eax |
155 ; CHECK: call {{.*}} R_{{.*}} f1 | 155 ; CHECK: call {{.*}} R_{{.*}} f1 |
156 | 156 |
157 ; ARM32-LABEL: fixed_351_align_32 | 157 ; ARM32-LABEL: fixed_351_align_32 |
158 ; ARM32-OPT2: sub sp, sp, #360 | 158 ; ARM32-OPT2: sub sp, sp, #360 |
159 ; ARM32-OPTM1: sub sp, sp, #352 | 159 ; ARM32-OPTM1: sub sp, sp, #352 |
160 ; ARM32: bic sp, sp, #31 | 160 ; ARM32: bic sp, sp, #31 |
161 ; ARM32: bl {{.*}} R_{{.*}} f1 | 161 ; ARM32: bl {{.*}} R_{{.*}} f1 |
162 | 162 |
163 ; MIPS32-LABEL: fixed_351_align_32 | 163 ; MIPS32-LABEL: fixed_351_align_32 |
164 ; MIPS32-OPT2: addiu sp,sp,-376 | 164 ; MIPS32-OPT2: addiu sp,sp,-384 |
165 ; MIPS32-OPT2: addiu a0,sp,16 | 165 ; MIPS32-OPT2: addiu a0,sp,16 |
166 ; MIPS32-OPTM1: addiu sp,sp,-384 | 166 ; MIPS32-OPTM1: addiu sp,sp,-384 |
167 ; MIPS32-OPTM1: addiu [[REG:.*]],sp,16 | 167 ; MIPS32-OPTM1: addiu [[REG:.*]],sp,16 |
168 ; MIPS32-OPTM1: sw [[REG]],{{.*}} | 168 ; MIPS32-OPTM1: sw [[REG]],{{.*}} |
169 ; MIPS32-OPTM1: lw a0,{{.*}} | 169 ; MIPS32-OPTM1: lw a0,{{.*}} |
170 ; MIPS32: jal {{.*}} R_{{.*}} f1 | 170 ; MIPS32: jal {{.*}} R_{{.*}} f1 |
171 | 171 |
172 declare void @f1(i32 %ignored) | 172 declare void @f1(i32 %ignored) |
173 | 173 |
174 declare void @f2(i32 %ignored) | 174 declare void @f2(i32 %ignored) |
(...skipping 15 matching lines...) Expand all Loading... |
190 ; CHECK: mov DWORD PTR [esp],eax | 190 ; CHECK: mov DWORD PTR [esp],eax |
191 ; CHECK: call {{.*}} R_{{.*}} f2 | 191 ; CHECK: call {{.*}} R_{{.*}} f2 |
192 | 192 |
193 ; ARM32-LABEL: variable_n_align_16 | 193 ; ARM32-LABEL: variable_n_align_16 |
194 ; ARM32: add r0, r0, #15 | 194 ; ARM32: add r0, r0, #15 |
195 ; ARM32: bic r0, r0, #15 | 195 ; ARM32: bic r0, r0, #15 |
196 ; ARM32: sub sp, sp, r0 | 196 ; ARM32: sub sp, sp, r0 |
197 ; ARM32: bl {{.*}} R_{{.*}} f2 | 197 ; ARM32: bl {{.*}} R_{{.*}} f2 |
198 | 198 |
199 ; MIPS32-LABEL: variable_n_align_16 | 199 ; MIPS32-LABEL: variable_n_align_16 |
200 ; MIPS32: addiu»[[REG:.*]],{{.*}},7 | 200 ; MIPS32: addiu»[[REG:.*]],{{.*}},15 |
201 ; MIPS32: li» [[REG1:.*]],-8 | 201 ; MIPS32: li» [[REG1:.*]],-16 |
202 ; MIPS32: and [[REG2:.*]],[[REG]],[[REG1]] | 202 ; MIPS32: and [[REG2:.*]],[[REG]],[[REG1]] |
203 ; MIPS32: subu [[REG3:.*]],sp,[[REG2:.*]] | 203 ; MIPS32: subu [[REG3:.*]],sp,[[REG2:.*]] |
204 ; MIPS32: li [[REG4:.*]],-16 | 204 ; MIPS32: li [[REG4:.*]],-16 |
205 ; MIPS32: and {{.*}},[[REG3]],[[REG4]] | 205 ; MIPS32: and {{.*}},[[REG3]],[[REG4]] |
206 ; MIPS32: addiu sp,sp,-16 | 206 ; MIPS32: addiu sp,sp,-16 |
207 ; MIPS32: jal {{.*}} R_{{.*}} f2 | 207 ; MIPS32: jal {{.*}} R_{{.*}} f2 |
208 ; MIPS32: addiu sp,sp,16 | 208 ; MIPS32: addiu sp,sp,16 |
209 | 209 |
210 define internal void @variable_n_align_32(i32 %n) { | 210 define internal void @variable_n_align_32(i32 %n) { |
211 entry: | 211 entry: |
(...skipping 23 matching lines...) Expand all Loading... |
235 ; ARM32: mov fp, sp | 235 ; ARM32: mov fp, sp |
236 ; ARM32: bic sp, sp, #31 | 236 ; ARM32: bic sp, sp, #31 |
237 ; ARM32: add r0, r0, #31 | 237 ; ARM32: add r0, r0, #31 |
238 ; ARM32: bic r0, r0, #31 | 238 ; ARM32: bic r0, r0, #31 |
239 ; ARM32: sub sp, sp, r0 | 239 ; ARM32: sub sp, sp, r0 |
240 ; ARM32: bl {{.*}} R_{{.*}} f2 | 240 ; ARM32: bl {{.*}} R_{{.*}} f2 |
241 ; ARM32: mov sp, fp | 241 ; ARM32: mov sp, fp |
242 ; ARM32: pop {fp, lr} | 242 ; ARM32: pop {fp, lr} |
243 | 243 |
244 ; MIPS32-LABEL: variable_n_align_32 | 244 ; MIPS32-LABEL: variable_n_align_32 |
245 ; MIPS32: addiu»[[REG:.*]],{{.*}},7 | 245 ; MIPS32: addiu»[[REG:.*]],{{.*}},15 |
246 ; MIPS32: li » [[REG1:.*]],-8 | 246 ; MIPS32: li » [[REG1:.*]],-16 |
247 ; MIPS32: and [[REG2:.*]],[[REG]],[[REG1]] | 247 ; MIPS32: and [[REG2:.*]],[[REG]],[[REG1]] |
248 ; MIPS32: subu [[REG3:.*]],sp,[[REG2]] | 248 ; MIPS32: subu [[REG3:.*]],sp,[[REG2]] |
249 ; MIPS32: li [[REG4:.*]],-32 | 249 ; MIPS32: li [[REG4:.*]],-32 |
250 ; MIPS32: and {{.*}},[[REG3]],[[REG4]] | 250 ; MIPS32: and {{.*}},[[REG3]],[[REG4]] |
251 ; MIPS32: addiu sp,sp,-16 | 251 ; MIPS32: addiu sp,sp,-16 |
252 ; MIPS32: jal {{.*}} R_{{.*}} f2 | 252 ; MIPS32: jal {{.*}} R_{{.*}} f2 |
253 ; MIPS32: addiu sp,sp,16 | 253 ; MIPS32: addiu sp,sp,16 |
254 | 254 |
255 ; Test alloca with default (0) alignment. | 255 ; Test alloca with default (0) alignment. |
256 define internal void @align0(i32 %n) { | 256 define internal void @align0(i32 %n) { |
257 entry: | 257 entry: |
258 %array = alloca i8, i32 %n | 258 %array = alloca i8, i32 %n |
259 %__2 = ptrtoint i8* %array to i32 | 259 %__2 = ptrtoint i8* %array to i32 |
260 call void @f2(i32 %__2) | 260 call void @f2(i32 %__2) |
261 ret void | 261 ret void |
262 } | 262 } |
263 ; CHECK-LABEL: align0 | 263 ; CHECK-LABEL: align0 |
264 ; CHECK: add [[REG:.*]],0xf | 264 ; CHECK: add [[REG:.*]],0xf |
265 ; CHECK: and [[REG]],0xfffffff0 | 265 ; CHECK: and [[REG]],0xfffffff0 |
266 ; CHECK: sub esp,[[REG]] | 266 ; CHECK: sub esp,[[REG]] |
267 | 267 |
268 ; ARM32-LABEL: align0 | 268 ; ARM32-LABEL: align0 |
269 ; ARM32: add r0, r0, #15 | 269 ; ARM32: add r0, r0, #15 |
270 ; ARM32: bic r0, r0, #15 | 270 ; ARM32: bic r0, r0, #15 |
271 ; ARM32: sub sp, sp, r0 | 271 ; ARM32: sub sp, sp, r0 |
272 | 272 |
273 ; MIPS32-LABEL: align0 | 273 ; MIPS32-LABEL: align0 |
274 ; MIPS32: addiu»[[REG:.*]],{{.*}},7 | 274 ; MIPS32: addiu»[[REG:.*]],{{.*}},15 |
275 ; MIPS32: li» [[REG1:.*]],-8 | 275 ; MIPS32: li» [[REG1:.*]],-16 |
276 ; MIPS32: and [[REG2:.*]],[[REG]],[[REG1]] | 276 ; MIPS32: and [[REG2:.*]],[[REG]],[[REG1]] |
277 ; MIPS32: subu {{.*}},sp,[[REG2]] | 277 ; MIPS32: subu {{.*}},sp,[[REG2]] |
278 ; MIPS32: addiu sp,sp,-16 | 278 ; MIPS32: addiu sp,sp,-16 |
279 ; MIPS32: jal {{.*}} R_{{.*}} f2 | 279 ; MIPS32: jal {{.*}} R_{{.*}} f2 |
280 ; MIPS32: addiu sp,sp,16 | 280 ; MIPS32: addiu sp,sp,16 |
281 | 281 |
282 ; Test a large alignment where a mask might not fit in an immediate | 282 ; Test a large alignment where a mask might not fit in an immediate |
283 ; field of an instruction for some architectures. | 283 ; field of an instruction for some architectures. |
284 define internal void @align1MB(i32 %n) { | 284 define internal void @align1MB(i32 %n) { |
285 entry: | 285 entry: |
(...skipping 16 matching lines...) Expand all Loading... |
302 ; ARM32: and sp, sp, [[REG]] | 302 ; ARM32: and sp, sp, [[REG]] |
303 ; ARM32: movw [[REG2:.*]], #65535 ; 0xffff | 303 ; ARM32: movw [[REG2:.*]], #65535 ; 0xffff |
304 ; ARM32: movt [[REG2]], #15 | 304 ; ARM32: movt [[REG2]], #15 |
305 ; ARM32: add r0, r0, [[REG2]] | 305 ; ARM32: add r0, r0, [[REG2]] |
306 ; ARM32: movw [[REG3:.*]], #0 | 306 ; ARM32: movw [[REG3:.*]], #0 |
307 ; ARM32: movt [[REG3]], #65520 ; 0xfff0 | 307 ; ARM32: movt [[REG3]], #65520 ; 0xfff0 |
308 ; ARM32: and r0, r0, [[REG3]] | 308 ; ARM32: and r0, r0, [[REG3]] |
309 ; ARM32: sub sp, sp, r0 | 309 ; ARM32: sub sp, sp, r0 |
310 | 310 |
311 ; MIPS32-LABEL: align1MB | 311 ; MIPS32-LABEL: align1MB |
312 ; MIPS32: addiu»[[REG:.*]],{{.*}},7 | 312 ; MIPS32: addiu»[[REG:.*]],{{.*}},15 |
313 ; MIPS32: li» [[REG1:.*]],-8 | 313 ; MIPS32: li» [[REG1:.*]],-16 |
314 ; MIPS32: and [[REG2:.*]],[[REG]],[[REG1]] | 314 ; MIPS32: and [[REG2:.*]],[[REG]],[[REG1]] |
315 ; MIPS32: subu [[REG3:.*]],sp,[[REG2]] | 315 ; MIPS32: subu [[REG3:.*]],sp,[[REG2]] |
316 ; MIPS32: lui [[REG4:.*]],0xfff0 | 316 ; MIPS32: lui [[REG4:.*]],0xfff0 |
317 ; MIPS32: and {{.*}},[[REG3]],[[REG4]] | 317 ; MIPS32: and {{.*}},[[REG3]],[[REG4]] |
318 ; MIPS32: addiu sp,sp,-16 | 318 ; MIPS32: addiu sp,sp,-16 |
319 ; MIPS32: jal {{.*}} R_{{.*}} f2 | 319 ; MIPS32: jal {{.*}} R_{{.*}} f2 |
320 ; MIPS32: addiu sp,sp,16 | 320 ; MIPS32: addiu sp,sp,16 |
321 | 321 |
322 ; Test a large alignment where a mask might still fit in an immediate | 322 ; Test a large alignment where a mask might still fit in an immediate |
323 ; field of an instruction for some architectures. | 323 ; field of an instruction for some architectures. |
(...skipping 13 matching lines...) Expand all Loading... |
337 ; CHECK: sub esp,[[REG]] | 337 ; CHECK: sub esp,[[REG]] |
338 | 338 |
339 ; ARM32-LABEL: align512MB | 339 ; ARM32-LABEL: align512MB |
340 ; ARM32: and sp, sp, #-536870912 ; 0xe0000000 | 340 ; ARM32: and sp, sp, #-536870912 ; 0xe0000000 |
341 ; ARM32: mvn [[REG:.*]], #-536870912 ; 0xe0000000 | 341 ; ARM32: mvn [[REG:.*]], #-536870912 ; 0xe0000000 |
342 ; ARM32: add r0, r0, [[REG]] | 342 ; ARM32: add r0, r0, [[REG]] |
343 ; ARM32: and r0, r0, #-536870912 ; 0xe0000000 | 343 ; ARM32: and r0, r0, #-536870912 ; 0xe0000000 |
344 ; ARM32: sub sp, sp, r0 | 344 ; ARM32: sub sp, sp, r0 |
345 | 345 |
346 ; MIPS32-LABEL: align512MB | 346 ; MIPS32-LABEL: align512MB |
347 ; MIPS32: addiu»[[REG:.*]],{{.*}},7 | 347 ; MIPS32: addiu»[[REG:.*]],{{.*}},15 |
348 ; MIPS32: li» [[REG2:.*]],-8 | 348 ; MIPS32: li» [[REG2:.*]],-16 |
349 ; MIPS32: and [[REG3:.*]],[[REG]],[[REG2]] | 349 ; MIPS32: and [[REG3:.*]],[[REG]],[[REG2]] |
350 ; MIPS32: subu [[REG4:.*]],sp,[[REG3]] | 350 ; MIPS32: subu [[REG4:.*]],sp,[[REG3]] |
351 ; MIPS32: lui [[REG5:.*]],0xe000 | 351 ; MIPS32: lui [[REG5:.*]],0xe000 |
352 ; MIPS32: and {{.*}},[[REG4]],[[REG5]] | 352 ; MIPS32: and {{.*}},[[REG4]],[[REG5]] |
353 ; MIPS32: addiu sp,sp,-16 | 353 ; MIPS32: addiu sp,sp,-16 |
354 ; MIPS32: jal {{.*}} R_{{.*}} f2 | 354 ; MIPS32: jal {{.*}} R_{{.*}} f2 |
355 ; MIPS32: addiu sp,sp,16 | 355 ; MIPS32: addiu sp,sp,16 |
356 | 356 |
357 ; Test that a simple alloca sequence doesn't trigger a frame pointer. | 357 ; Test that a simple alloca sequence doesn't trigger a frame pointer. |
358 define internal void @fixed_no_frameptr(i32 %arg) { | 358 define internal void @fixed_no_frameptr(i32 %arg) { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 %p1 = bitcast i8* %a1 to i32* | 398 %p1 = bitcast i8* %a1 to i32* |
399 %p2 = bitcast i8* %a2 to i32* | 399 %p2 = bitcast i8* %a2 to i32* |
400 %p3 = bitcast i8* %a3 to i32* | 400 %p3 = bitcast i8* %a3 to i32* |
401 store i32 %arg, i32* %p1, align 1 | 401 store i32 %arg, i32* %p1, align 1 |
402 store i32 %arg, i32* %p2, align 1 | 402 store i32 %arg, i32* %p2, align 1 |
403 store i32 %arg, i32* %p3, align 1 | 403 store i32 %arg, i32* %p3, align 1 |
404 ret void | 404 ret void |
405 } | 405 } |
406 ; CHECK-LABEL: var_with_frameptr | 406 ; CHECK-LABEL: var_with_frameptr |
407 ; CHECK: mov ebp,esp | 407 ; CHECK: mov ebp,esp |
OLD | NEW |