mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-15 06:29:05 +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:
@@ -443,37 +443,15 @@ PPCInstrInfo::StoreRegToStackSlot(MachineFunction &MF,
|
|||||||
bool &NonRI) const{
|
bool &NonRI) const{
|
||||||
DebugLoc DL;
|
DebugLoc DL;
|
||||||
if (PPC::GPRCRegClass.hasSubClassEq(RC)) {
|
if (PPC::GPRCRegClass.hasSubClassEq(RC)) {
|
||||||
if (SrcReg != PPC::LR) {
|
|
||||||
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STW))
|
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STW))
|
||||||
.addReg(SrcReg,
|
.addReg(SrcReg,
|
||||||
getKillRegState(isKill)),
|
getKillRegState(isKill)),
|
||||||
FrameIdx));
|
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));
|
|
||||||
}
|
|
||||||
} else if (PPC::G8RCRegClass.hasSubClassEq(RC)) {
|
} else if (PPC::G8RCRegClass.hasSubClassEq(RC)) {
|
||||||
if (SrcReg != PPC::LR8) {
|
|
||||||
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STD))
|
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STD))
|
||||||
.addReg(SrcReg,
|
.addReg(SrcReg,
|
||||||
getKillRegState(isKill)),
|
getKillRegState(isKill)),
|
||||||
FrameIdx));
|
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));
|
|
||||||
}
|
|
||||||
} else if (PPC::F8RCRegClass.hasSubClassEq(RC)) {
|
} else if (PPC::F8RCRegClass.hasSubClassEq(RC)) {
|
||||||
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STFD))
|
NewMIs.push_back(addFrameReference(BuildMI(MF, DL, get(PPC::STFD))
|
||||||
.addReg(SrcReg,
|
.addReg(SrcReg,
|
||||||
|
Reference in New Issue
Block a user