diff options
author | Stephen Tozer <Stephen.Tozer@Sony.com> | 2021-04-29 16:04:24 +0100 |
---|---|---|
committer | Stephen Tozer <Stephen.Tozer@Sony.com> | 2021-05-07 11:47:50 +0100 |
commit | 0791f968fee259e5c34523167bd58179b8b081c2 (patch) | |
tree | 61521fd01293d7ac2838e575916bb1dfe3855337 /llvm/lib/CodeGen/MachineCopyPropagation.cpp | |
parent | f0762fc42f0f4ecf849bef42eed2bb4c0785ea67 (diff) | |
download | llvm-0791f968fee259e5c34523167bd58179b8b081c2.zip llvm-0791f968fee259e5c34523167bd58179b8b081c2.tar.gz llvm-0791f968fee259e5c34523167bd58179b8b081c2.tar.bz2 |
[DebugInfo] Fix updateDbgUsersToReg to support DBG_VALUE_LIST
This patch modifies updateDbgUsersToReg to properly handle
DBG_VALUE_LIST instructions, by replacing the hard-coded operand indices
(i.e. getOperand(0)) with the more general getDebugOperandsForReg(), and
updating the register for all matching operands.
Differential Revision: https://reviews.llvm.org/D101523
Diffstat (limited to 'llvm/lib/CodeGen/MachineCopyPropagation.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineCopyPropagation.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/MachineCopyPropagation.cpp b/llvm/lib/CodeGen/MachineCopyPropagation.cpp index d8659c1..45f32ad 100644 --- a/llvm/lib/CodeGen/MachineCopyPropagation.cpp +++ b/llvm/lib/CodeGen/MachineCopyPropagation.cpp @@ -294,7 +294,7 @@ private: SmallSetVector<MachineInstr *, 8> MaybeDeadCopies; /// Multimap tracking debug users in current BB - DenseMap<MachineInstr*, SmallVector<MachineInstr*, 2>> CopyDbgUsers; + DenseMap<MachineInstr *, SmallSet<MachineInstr *, 2>> CopyDbgUsers; CopyTracker Tracker; @@ -321,7 +321,7 @@ void MachineCopyPropagation::ReadRegister(MCRegister Reg, MachineInstr &Reader, LLVM_DEBUG(dbgs() << "MCP: Copy is used - not dead: "; Copy->dump()); MaybeDeadCopies.remove(Copy); } else { - CopyDbgUsers[Copy].push_back(&Reader); + CopyDbgUsers[Copy].insert(&Reader); } } } @@ -734,7 +734,10 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) { // Update matching debug values, if any. assert(MaybeDead->isCopy()); Register SrcReg = MaybeDead->getOperand(1).getReg(); - MRI->updateDbgUsersToReg(SrcReg, CopyDbgUsers[MaybeDead]); + Register DestReg = MaybeDead->getOperand(0).getReg(); + SmallVector<MachineInstr *> MaybeDeadDbgUsers( + CopyDbgUsers[MaybeDead].begin(), CopyDbgUsers[MaybeDead].end()); + MRI->updateDbgUsersToReg(DestReg, SrcReg, MaybeDeadDbgUsers); MaybeDead->eraseFromParent(); Changed = true; |