Changes in directory llvm/lib/CodeGen:
VirtRegMap.cpp updated: 1.59 -> 1.60 --- Log message: 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. --- Diffs of the changes: (+13 -0) VirtRegMap.cpp | 13 +++++++++++++ 1 files changed, 13 insertions(+) Index: llvm/lib/CodeGen/VirtRegMap.cpp diff -u llvm/lib/CodeGen/VirtRegMap.cpp:1.59 llvm/lib/CodeGen/VirtRegMap.cpp:1.60 --- llvm/lib/CodeGen/VirtRegMap.cpp:1.59 Thu Apr 27 20:46:50 2006 +++ llvm/lib/CodeGen/VirtRegMap.cpp Thu Apr 27 23:43:18 2006 @@ -611,6 +611,19 @@ 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); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits