forked from OSchip/llvm-project
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. llvm-svn: 28008
This commit is contained in:
parent
e63d808b6e
commit
79c50d96c9
|
@ -611,6 +611,19 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, const VirtRegMap &VRM) {
|
|||
DesignatedReg = ReusedOperands.GetRegForReload(DesignatedReg, &MI,
|
||||
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 =
|
||||
MBB.getParent()->getSSARegMap()->getRegClass(VirtReg);
|
||||
|
||||
|
|
Loading…
Reference in New Issue