Skip to content

Commit 079d654

Browse files
committed
Fix hoisting safe dead implicit-defs
1 parent a7b994f commit 079d654

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

llvm/lib/CodeGen/MachineLICM.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -554,8 +554,6 @@ void MachineLICMImpl::ProcessMI(MachineInstr *MI, BitVector &RUDefs,
554554
}
555555

556556
if (MO.isImplicit()) {
557-
for (MCRegUnit Unit : TRI->regunits(Reg))
558-
RUClobbers.set(Unit);
559557
if (!MO.isDead())
560558
// Non-dead implicit def? This cannot be hoisted.
561559
RuledOut = true;
@@ -582,6 +580,8 @@ void MachineLICMImpl::ProcessMI(MachineInstr *MI, BitVector &RUDefs,
582580
}
583581

584582
RUDefs.set(Unit);
583+
if (MO.isImplicit())
584+
RUClobbers.set(Unit);
585585
}
586586
}
587587

llvm/test/CodeGen/AArch64/mlicm-implicit-defs.mir

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,15 @@ body: |
6262
; CHECK-NEXT: liveins: $x0
6363
; CHECK-NEXT: {{ $}}
6464
; CHECK-NEXT: $x12 = COPY killed $x0
65+
; CHECK-NEXT: $x2 = MOVi64imm 1024, implicit-def dead $x16
6566
; CHECK-NEXT: B %bb.1
6667
; CHECK-NEXT: {{ $}}
6768
; CHECK-NEXT: bb.1:
6869
; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
69-
; CHECK-NEXT: liveins: $x12
70+
; CHECK-NEXT: liveins: $x12, $x2
7071
; CHECK-NEXT: {{ $}}
7172
; CHECK-NEXT: $x1 = COPY killed $x12
72-
; CHECK-NEXT: $x2 = MOVi64imm 1024, implicit-def dead $x16
73-
; CHECK-NEXT: $x16 = LDRXroX killed $x1, killed $x2, 0, 0
73+
; CHECK-NEXT: $x16 = LDRXroX killed $x1, $x2, 0, 0
7474
; CHECK-NEXT: $xzr = SUBSXri $x16, 0, 0, implicit-def $nzcv
7575
; CHECK-NEXT: Bcc 1, %bb.1, implicit $nzcv
7676
; CHECK-NEXT: B %bb.2

0 commit comments

Comments
 (0)