and back in. false alarm on the tests from another unrelated local change.

llvm-svn: 110269
This commit is contained in:
Jim Grosbach 2010-08-04 22:46:09 +00:00
parent 39d0f57cab
commit 8aaadea8ef
1 changed files with 7 additions and 2 deletions

View File

@ -851,13 +851,18 @@ ARMBaseRegisterInfo::processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
// slot of the previous FP. Also, if we have variable sized objects in the // slot of the previous FP. Also, if we have variable sized objects in the
// function, stack slot references will often be negative, and some of // function, stack slot references will often be negative, and some of
// our instructions are positive-offset only, so conservatively consider // our instructions are positive-offset only, so conservatively consider
// that case to want a spill slot (or register) as well. // that case to want a spill slot (or register) as well. Similarly, if
// the function adjusts the stack pointer during execution and the
// adjustments aren't already part of our stack size estimate, our offset
// calculations may be off, so be conservative.
// FIXME: We could add logic to be more precise about negative offsets // FIXME: We could add logic to be more precise about negative offsets
// and which instructions will need a scratch register for them. Is it // and which instructions will need a scratch register for them. Is it
// worth the effort and added fragility? // worth the effort and added fragility?
bool BigStack = bool BigStack =
(RS && (estimateStackSize(MF) + (hasFP(MF) ? 4:0) >= (RS && (estimateStackSize(MF) + (hasFP(MF) ? 4:0) >=
estimateRSStackSizeLimit(MF))) || MFI->hasVarSizedObjects(); estimateRSStackSizeLimit(MF))
|| MFI->hasVarSizedObjects()
|| (MFI->adjustsStack() && !canSimplifyCallFramePseudos(MF)));
bool ExtraCSSpill = false; bool ExtraCSSpill = false;
if (BigStack || !CanEliminateFrame || cannotEliminateFrame(MF)) { if (BigStack || !CanEliminateFrame || cannotEliminateFrame(MF)) {