[PATCH] D104576: RegisterCoalescer: Fix iterating through use operands.

Hendrik Greving via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 18 18:29:42 PDT 2021


hgreving updated this revision to Diff 353136.
hgreving added a comment.

Use iterator preincrement instead.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D104576/new/

https://reviews.llvm.org/D104576

Files:
  llvm/lib/CodeGen/RegisterCoalescer.cpp
  llvm/test/DebugInfo/MIR/X86/regcoalescer.mir


Index: llvm/test/DebugInfo/MIR/X86/regcoalescer.mir
===================================================================
--- llvm/test/DebugInfo/MIR/X86/regcoalescer.mir
+++ llvm/test/DebugInfo/MIR/X86/regcoalescer.mir
@@ -27,9 +27,10 @@
   !16 = !{!7}
   !17 = !{!18}
   !18 = !DILocalVariable(name: "bazinga", scope: !14, file: !1, line: 13, type: !7)
-  !19 = !DILocation(line: 14, column: 11, scope: !14)
-  !20 = !DILocation(line: 13, column: 7, scope: !14)
-  !21 = !DILocation(line: 16, column: 3, scope: !14)
+  !19 = !DILocalVariable(name: "bazinga2", scope: !14, file: !1, line: 13, type: !7)
+  !20 = !DILocation(line: 14, column: 11, scope: !14)
+  !21 = !DILocation(line: 13, column: 7, scope: !14)
+  !22 = !DILocation(line: 16, column: 3, scope: !14)
 
 ...
 ---
@@ -39,10 +40,11 @@
   - { id: 0, class: gr32, preferred-register: '' }
 body:             |
   bb.0.entry:
-    %0 = MOV32r0 implicit-def dead $eflags, debug-location !19
-    DBG_VALUE %0, _, !18, !DIExpression(), debug-location !20
-    $eax = COPY killed %0, debug-location !21
-    RET 0, killed $eax, debug-location !21
+    %0 = MOV32r0 implicit-def dead $eflags, debug-location !20
+    DBG_VALUE %0, _, !18, !DIExpression(), debug-location !21
+    DBG_VALUE %0, _, !19, !DIExpression(), debug-location !22
+    $eax = COPY killed %0, debug-location !22
+    RET 0, killed $eax, debug-location !22
 
 ...
 
Index: llvm/lib/CodeGen/RegisterCoalescer.cpp
===================================================================
--- llvm/lib/CodeGen/RegisterCoalescer.cpp
+++ llvm/lib/CodeGen/RegisterCoalescer.cpp
@@ -1557,7 +1557,8 @@
   // If the virtual SrcReg is completely eliminated, update all DBG_VALUEs
   // to describe DstReg instead.
   if (MRI->use_nodbg_empty(SrcReg)) {
-    for (MachineOperand &UseMO : MRI->use_operands(SrcReg)) {
+    for (MachineRegisterInfo::use_iterator UI = MRI->use_begin(SrcReg); UI != MRI->use_end();) {
+      MachineOperand &UseMO = *UI++;
       MachineInstr *UseMI = UseMO.getParent();
       if (UseMI->isDebugValue()) {
         if (Register::isPhysicalRegister(DstReg))


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D104576.353136.patch
Type: text/x-patch
Size: 2098 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210619/511383fd/attachment-0001.bin>


More information about the llvm-commits mailing list