mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-13 15:37:24 +00:00
When checking whether we need to reserve a register for the scavenger,
the size of the saved frame pointer needs to be taken into account. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83136 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c732adf3a1
commit
d1a5ca6cb1
@ -654,7 +654,13 @@ ARMBaseRegisterInfo::processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
|
||||
// adjustments also, even when the frame itself is small.
|
||||
if (RS && !ExtraCSSpill) {
|
||||
MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
if (estimateStackSize(MF, MFI) >= estimateRSStackSizeLimit(MF)
|
||||
// If any of the stack slot references may be out of range of an
|
||||
// immediate offset, make sure a register (or a spill slot) is
|
||||
// available for the register scavenger. Note that if we're indexing
|
||||
// off the frame pointer, the effective stack size is 4 bytes larger
|
||||
// since the FP points to the previous FP.
|
||||
if (estimateStackSize(MF, MFI) + (hasFP(MF) ? 4 : 0)
|
||||
>= estimateRSStackSizeLimit(MF)
|
||||
|| AFI->isThumb1OnlyFunction()) {
|
||||
// If any non-reserved CS register isn't spilled, just spill one or two
|
||||
// extra. That should take care of it!
|
||||
|
Loading…
x
Reference in New Issue
Block a user