mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-17 06:33:21 +00:00
Remove dead PPC LR spilling code
The LR register is unconditionally reserved, and its spilling and restoration is handled by the prologue/epilogue code. As a result, it is never explicitly spilled by the register allocator. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177823 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7cdba152bb
commit
7257fda1b3
@ -443,37 +443,15 @@ PPCInstrInfo::StoreRegToStackSlot(MachineFunction &MF,
|
||||
bool &NonRI) const{
|
||||
DebugLoc DL;
|
||||
if (PPC::GPRCRegClass.hasSubClassEq(RC)) {
|
||||
if (SrcReg != PPC::LR) {
|
||||
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STW))
|
||||
.addReg(SrcReg,
|
||||
getKillRegState(isKill)),
|
||||
FrameIdx));
|
||||
} else {
|
||||
// FIXME: this spills LR immediately to memory in one step. To do this,
|
||||
// we use R11, which we know cannot be used in the prolog/epilog. This is
|
||||
// a hack.
|
||||
NewMIs.push_back(BuildMI(MF, DL, get(PPC::MFLR), PPC::R11));
|
||||
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STW))
|
||||
.addReg(PPC::R11,
|
||||
getKillRegState(isKill)),
|
||||
FrameIdx));
|
||||
}
|
||||
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STW))
|
||||
.addReg(SrcReg,
|
||||
getKillRegState(isKill)),
|
||||
FrameIdx));
|
||||
} else if (PPC::G8RCRegClass.hasSubClassEq(RC)) {
|
||||
if (SrcReg != PPC::LR8) {
|
||||
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STD))
|
||||
.addReg(SrcReg,
|
||||
getKillRegState(isKill)),
|
||||
FrameIdx));
|
||||
} else {
|
||||
// FIXME: this spills LR immediately to memory in one step. To do this,
|
||||
// we use X11, which we know cannot be used in the prolog/epilog. This is
|
||||
// a hack.
|
||||
NewMIs.push_back(BuildMI(MF, DL, get(PPC::MFLR8), PPC::X11));
|
||||
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STD))
|
||||
.addReg(PPC::X11,
|
||||
getKillRegState(isKill)),
|
||||
FrameIdx));
|
||||
}
|
||||
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STD))
|
||||
.addReg(SrcReg,
|
||||
getKillRegState(isKill)),
|
||||
FrameIdx));
|
||||
} else if (PPC::F8RCRegClass.hasSubClassEq(RC)) {
|
||||
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STFD))
|
||||
.addReg(SrcReg,
|
||||
|
Loading…
x
Reference in New Issue
Block a user