mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-10 02:38:50 +00:00
Mapping of physregs can make it so that the designated and input physregs are
the same. In this case, don't emit a noop copy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28008 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ae74f55552
commit
ba1fc3daf7
@ -611,6 +611,19 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, const VirtRegMap &VRM) {
|
|||||||
DesignatedReg = ReusedOperands.GetRegForReload(DesignatedReg, &MI,
|
DesignatedReg = ReusedOperands.GetRegForReload(DesignatedReg, &MI,
|
||||||
Spills, MaybeDeadStores);
|
Spills, MaybeDeadStores);
|
||||||
|
|
||||||
|
// If the mapped designated register is actually the physreg we have
|
||||||
|
// incoming, we don't need to inserted a dead copy.
|
||||||
|
if (DesignatedReg == PhysReg) {
|
||||||
|
// If this stack slot value is already available, reuse it!
|
||||||
|
DEBUG(std::cerr << "Reusing SS#" << StackSlot << " from physreg "
|
||||||
|
<< MRI->getName(PhysReg) << " for vreg"
|
||||||
|
<< VirtReg
|
||||||
|
<< " instead of reloading into same physreg.\n");
|
||||||
|
MI.SetMachineOperandReg(i, PhysReg);
|
||||||
|
++NumReused;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
const TargetRegisterClass* RC =
|
const TargetRegisterClass* RC =
|
||||||
MBB.getParent()->getSSARegMap()->getRegClass(VirtReg);
|
MBB.getParent()->getSSARegMap()->getRegClass(VirtReg);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user