[PATCH] D101523: [DebugInfo] Fix updateDbgUsersToReg to support DBG_VALUE_LIST
Stephen Tozer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 29 05:12:09 PDT 2021
StephenTozer created this revision.
StephenTozer added reviewers: dblaikie, probinson, vsk, aprantl, jmorse.
StephenTozer added a project: debug-info.
Herald added a subscriber: hiraditya.
StephenTozer requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
This patch resolves an issue reported in review https://reviews.llvm.org/D91722 (post-commit). The issue is relatively simple; the function `updateDbgUsersToReg` was not updated to support `DBG_VALUE_LIST` instructions in the patch that introduced that instruction. The fix is also simple, simply replacing hardcoded operand indices (`getOperand(0)`) with the new debug operand getter. The patch has also modified the assertion `MI->isDebugInstr()` with `MI->isDebugValue()`, as the former is overly general for this function. A test will be added to the review shortly, but the functional changes of the patch should be easy to review regardless.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D101523
Files:
llvm/include/llvm/CodeGen/MachineRegisterInfo.h
llvm/lib/CodeGen/MachineCopyPropagation.cpp
Index: llvm/lib/CodeGen/MachineCopyPropagation.cpp
===================================================================
--- llvm/lib/CodeGen/MachineCopyPropagation.cpp
+++ llvm/lib/CodeGen/MachineCopyPropagation.cpp
@@ -734,7 +734,8 @@
// 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();
+ MRI->updateDbgUsersToReg(DestReg, SrcReg, CopyDbgUsers[MaybeDead]);
MaybeDead->eraseFromParent();
Changed = true;
Index: llvm/include/llvm/CodeGen/MachineRegisterInfo.h
===================================================================
--- llvm/include/llvm/CodeGen/MachineRegisterInfo.h
+++ llvm/include/llvm/CodeGen/MachineRegisterInfo.h
@@ -823,12 +823,13 @@
/// updateDbgUsersToReg - Update a collection of DBG_VALUE instructions
/// to refer to the designated register.
- void updateDbgUsersToReg(Register Reg,
- ArrayRef<MachineInstr*> Users) const {
+ void updateDbgUsersToReg(Register OldReg, Register NewReg,
+ ArrayRef<MachineInstr *> Users) const {
for (MachineInstr *MI : Users) {
- assert(MI->isDebugInstr());
- assert(MI->getOperand(0).isReg());
- MI->getOperand(0).setReg(Reg);
+ assert(MI->isDebugValue());
+ assert(MI->hasDebugOperandForReg(OldReg));
+ for (auto &Op : MI->getDebugOperandsForReg(OldReg))
+ Op.setReg(NewReg);
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D101523.341476.patch
Type: text/x-patch
Size: 1591 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210429/2e67b83c/attachment.bin>
More information about the llvm-commits
mailing list