forked from OSchip/llvm-project
RegisterCoalescer: Fix iterating through use operands.
Fixes a minor bug when trying to iterate through use operands when updating debug use operands. Extends a test to include above. Differential Revision: https://reviews.llvm.org/D104576
This commit is contained in:
parent
186f2ac612
commit
96994427f2
|
@ -1557,7 +1557,9 @@ bool RegisterCoalescer::reMaterializeTrivialDef(const CoalescerPair &CP,
|
|||
// 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))
|
||||
|
|
|
@ -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,12 +40,14 @@ registers:
|
|||
- { 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
|
||||
|
||||
...
|
||||
|
||||
# CHECK: $eax = MOV32r0
|
||||
# CHECK-NEXT: DBG_VALUE $eax
|
||||
# CHECK-NEXT: DBG_VALUE $eax
|
||||
|
|
Loading…
Reference in New Issue