Displaying 3 results from an estimated 3 matches for "scavengingframeindex".
2012 Nov 10
5
[LLVMdev] register scavenger
...p.
Maybe I'm misunderstanding this code.
// If the target knows how to save/restore the register, let it do so;
// otherwise, use the emergency stack spill slot.
if (!TRI->saveScavengerRegister(*MBB, I, UseMI, RC, SReg)) {
// Spill the scavenged register before I.
assert(ScavengingFrameIndex >= 0 &&
"Cannot scavenge register without an emergency spill slot!");
TII->storeRegToStackSlot(*MBB, I, SReg, true, ScavengingFrameIndex,
RC,TRI);
MachineBasicBlock::iterator II = prior(I);
TRI->eliminateFrameIndex(II, SPAdj, this);
// Re...
2012 Nov 10
0
[LLVMdev] register scavenger
...erstanding this code.
>
> // If the target knows how to save/restore the register, let it do so;
> // otherwise, use the emergency stack spill slot.
> if (!TRI->saveScavengerRegister(*MBB, I, UseMI, RC, SReg)) {
> // Spill the scavenged register before I.
> assert(ScavengingFrameIndex >= 0 &&
> "Cannot scavenge register without an emergency spill slot!");
> TII->storeRegToStackSlot(*MBB, I, SReg, true, ScavengingFrameIndex,
> RC,TRI);
> MachineBasicBlock::iterator II = prior(I);
> TRI->eliminateFrameIndex(II, SPAdj...
2011 Dec 05
2
[LLVMdev] bug in ARMFrameLowering.cpp:processFunctionBeforeCalleeSavedScan
...ter BigStack is initialized.
The specific issue this caused in my case was that BigStack got initialized as false because estimateRSSStackSizeLimit returned (1<<12)-1 instead of (1<<8)-1. The code thus never entered the if (BigStack && !ExtraCSSpill) block further down where setScavengingFrameIndex should have been set. As a result of it was not being set there, there was an assertion failure (ScavengingFrameIndex >= 0) and subsequent memory corruption in RegScavenger::scavengeRegister.
I fixed this by performing the CanEliminateFrame and RegInfo->cannotEliminateFrame checks before the...