Make sure the LR gets pushed in functions that use vaargs. This fixes

400.perlbench for the nightly tests.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98183 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jim Grosbach 2010-03-10 20:01:30 +00:00
parent 004453e85e
commit f49be7c96f

View File

@ -590,6 +590,10 @@ ARMBaseRegisterInfo::processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
AFI->isThumb2Function()) AFI->isThumb2Function())
MF.getRegInfo().setPhysRegUsed(ARM::R4); MF.getRegInfo().setPhysRegUsed(ARM::R4);
// Spill LR if Thumb1 function uses variable length argument lists.
if (AFI->isThumb1OnlyFunction() && AFI->getVarArgsRegSaveSize() > 0)
MF.getRegInfo().setPhysRegUsed(ARM::LR);
// Don't spill FP if the frame can be eliminated. This is determined // Don't spill FP if the frame can be eliminated. This is determined
// by scanning the callee-save registers to see if any is used. // by scanning the callee-save registers to see if any is used.
const unsigned *CSRegs = getCalleeSavedRegs(); const unsigned *CSRegs = getCalleeSavedRegs();