mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 19:31:58 +00:00
For Thumb2, try to use frame pointer references for stack slots even when a
base register is available. rdar://8525298 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116729 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
aa85c21633
commit
5c57639c28
@ -953,8 +953,16 @@ ARMBaseRegisterInfo::ResolveFrameIndexReference(const MachineFunction &MF,
|
||||
return FPOffset;
|
||||
} else if (MFI->hasVarSizedObjects()) {
|
||||
assert(hasBasePointer(MF) && "missing base pointer!");
|
||||
// Use the base register since we have it.
|
||||
FrameReg = BasePtr;
|
||||
// Try to use the frame pointer if we can, else use the base pointer
|
||||
// since it's available. This is handy for the emergency spill slot, in
|
||||
// particular.
|
||||
if (AFI->isThumb2Function()) {
|
||||
if (FPOffset >= -255 && FPOffset < 0) {
|
||||
FrameReg = getFrameRegister(MF);
|
||||
return FPOffset;
|
||||
}
|
||||
} else
|
||||
FrameReg = BasePtr;
|
||||
} else if (AFI->isThumb2Function()) {
|
||||
// In Thumb2 mode, the negative offset is very limited. Try to avoid
|
||||
// out of range references.
|
||||
|
Loading…
Reference in New Issue
Block a user