mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-15 20:06:46 +00:00
1755b3964f
large local stack areas or require dynamic stack realignment, allocate a base register via which to access the local frame. This allows efficient access to frame indices not accessible via the FP (either due to being out of range or due to dynamic realignment) or the SP (due to variable sized object allocation). In particular, this greatly improves efficiency of access to spill slots in Thumb functions which contain VLAs. rdar://7352504 rdar://8374540 rdar://8355680 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112883 91177308-0d34-0410-b5e6-96231b3b80d8
19 lines
490 B
LLVM
19 lines
490 B
LLVM
; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -O3 | FileCheck %s
|
|
; rdar://7493908
|
|
|
|
; Make sure the result of the first dynamic_alloc isn't copied back to sp more
|
|
; than once. We'll deal with poor codegen later.
|
|
|
|
define void @t() nounwind ssp {
|
|
entry:
|
|
; CHECK: t:
|
|
%size = mul i32 8, 2
|
|
; CHECK: subs r0, #16
|
|
; CHECK: mov sp, r0
|
|
%vla_a = alloca i8, i32 %size, align 8
|
|
; CHECK: subs r0, #16
|
|
; CHECK: mov sp, r0
|
|
%vla_b = alloca i8, i32 %size, align 8
|
|
unreachable
|
|
}
|