From 5f366af2ff36cc65fe4964194b07bf1455828ff0 Mon Sep 17 00:00:00 2001 From: Jim Grosbach Date: Wed, 24 Feb 2010 02:15:43 +0000 Subject: [PATCH] handle very large call frames when require SPAdj != 0 for Thumb1 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97013 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMBaseRegisterInfo.cpp | 2 +- lib/Target/ARM/Thumb1RegisterInfo.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/Target/ARM/ARMBaseRegisterInfo.cpp b/lib/Target/ARM/ARMBaseRegisterInfo.cpp index 1c56808273e..e941a769c9d 100644 --- a/lib/Target/ARM/ARMBaseRegisterInfo.cpp +++ b/lib/Target/ARM/ARMBaseRegisterInfo.cpp @@ -1092,7 +1092,7 @@ hasReservedCallFrame(MachineFunction &MF) const { bool ARMBaseRegisterInfo:: canSimplifyCallFramePseudos(MachineFunction &MF) const { ARMFunctionInfo *AFI = MF.getInfo(); - return hasReservedCallFrame(MF) || (AFI->isThumb1OnlyFunction() && hasFP(MF)); + return hasReservedCallFrame(MF) || MF.getFrameInfo()->hasVarSizedObjects(); } static void diff --git a/lib/Target/ARM/Thumb1RegisterInfo.cpp b/lib/Target/ARM/Thumb1RegisterInfo.cpp index d6630ce29c1..b61ce29aab8 100644 --- a/lib/Target/ARM/Thumb1RegisterInfo.cpp +++ b/lib/Target/ARM/Thumb1RegisterInfo.cpp @@ -450,9 +450,9 @@ Thumb1RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, Offset -= AFI->getGPRCalleeSavedArea1Offset(); else if (AFI->isGPRCalleeSavedArea2Frame(FrameIndex)) Offset -= AFI->getGPRCalleeSavedArea2Offset(); - else if (hasFP(MF)) { - assert(SPAdj == 0 && "Unexpected"); - // There is alloca()'s in this function, must reference off the frame + else if (MF.getFrameInfo()->hasVarSizedObjects()) { + assert(SPAdj == 0 && hasFP(MF) && "Unexpected"); + // There are alloca()'s in this function, must reference off the frame // pointer instead. FrameReg = getFrameRegister(MF); Offset -= AFI->getFramePtrSpillOffset(); -- 2.34.1