Changes in directory llvm/lib/CodeGen:
VirtRegMap.cpp updated: 1.107 -> 1.108 --- Log message: Don't add the same MI to register reuse "last def/use" twice if it reads the register more than once. --- Diffs of the changes: (+4 -1) VirtRegMap.cpp | 5 ++++- 1 files changed, 4 insertions(+), 1 deletion(-) Index: llvm/lib/CodeGen/VirtRegMap.cpp diff -u llvm/lib/CodeGen/VirtRegMap.cpp:1.107 llvm/lib/CodeGen/VirtRegMap.cpp:1.108 --- llvm/lib/CodeGen/VirtRegMap.cpp:1.107 Mon Mar 26 19:48:28 2007 +++ llvm/lib/CodeGen/VirtRegMap.cpp Fri Mar 30 15:21:35 2007 @@ -316,7 +316,9 @@ assert(II != SpillSlotsAvailable.end() && "Slot not available!"); unsigned Val = II->second.first; assert((Val >> 1) == PhysReg && "Bidirectional map mismatch!"); - II->second.second.push_back(Use); + // This can be true if there are multiple uses of the same register. + if (II->second.second.back() != Use) + II->second.second.push_back(Use); } } @@ -1117,6 +1119,7 @@ if (TII->isMoveInstr(MI, Src, Dst) && Src == Dst) { ++NumDCE; DOUT << "Removing now-noop copy: " << MI; + Spills.removeLastUse(Src, &MI); MBB.erase(&MI); VRM.RemoveFromFoldedVirtMap(&MI); goto ProcessNextInst; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits