For ARM stack frames that utilize variable sized objects and have either
authorJim Grosbach <grosbach@apple.com>
Thu, 2 Sep 2010 22:29:01 +0000 (22:29 +0000)
committerJim Grosbach <grosbach@apple.com>
Thu, 2 Sep 2010 22:29:01 +0000 (22:29 +0000)
commit1755b3964f931bdd6fa9b4c0138f666ccfa12aca
treeda44cb7a52f81004cbdf4663047b5e49f6375afe
parentbc54ee9a77b496ba1d8dbbfc6bacd9b20066b31e
For ARM stack frames that utilize variable sized objects and have either
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
lib/Target/ARM/ARMBaseRegisterInfo.cpp
lib/Target/ARM/ARMBaseRegisterInfo.h
lib/Target/ARM/Thumb1RegisterInfo.cpp
test/CodeGen/Thumb/dyn-stackalloc.ll
test/CodeGen/Thumb2/2010-04-15-DynAllocBug.ll