mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-18 10:24:45 +00:00
Fix issue in regscavenger when scavenging a callee-saved register that has not been spilled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77912 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -471,9 +471,16 @@ unsigned RegScavenger::scavengeRegister(const TargetRegisterClass *RC,
|
||||
Reg = Candidates.find_next(Reg);
|
||||
}
|
||||
|
||||
assert(ScavengedReg == 0 &&
|
||||
assert(ScavengedReg == 0 &&
|
||||
"Scavenger slot is live, unable to scavenge another register!");
|
||||
|
||||
// Make sure SReg is marked as used. It could be considered available if it is
|
||||
// one of the callee saved registers, but hasn't been spilled.
|
||||
if (!isUsed(SReg)) {
|
||||
MBB->addLiveIn(SReg);
|
||||
setUsed(SReg);
|
||||
}
|
||||
|
||||
// Spill the scavenged register before I.
|
||||
TII->storeRegToStackSlot(*MBB, I, SReg, true, ScavengingFrameIndex, RC);
|
||||
MachineBasicBlock::iterator II = prior(I);
|
||||
|
Reference in New Issue
Block a user