Skip to content

Commit b1345f6

Browse files
fixup! improve phi cycle logic
1 parent 25edefa commit b1345f6

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1343,8 +1343,12 @@ RISCVVLOptimizer::checkUsers(const MachineInstr &MI) const {
13431343

13441344
if (UserMI.isPHI() && PHISeen.insert(&UserMI).second) {
13451345
LLVM_DEBUG(dbgs() << " Peeking through uses of PHI\n");
1346-
for (auto &PhiUse : MRI->use_operands(UserMI.getOperand(0).getReg()))
1346+
for (auto &PhiUse : MRI->use_operands(UserMI.getOperand(0).getReg())) {
1347+
// If UserMI has a PHI cycle, don't analyze it.
1348+
if (PhiUse.getParent() == &UserMI)
1349+
continue;
13471350
Worklist.insert(&PhiUse);
1351+
}
13481352
continue;
13491353
}
13501354

llvm/test/CodeGen/RISCV/rvv/vl-opt.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ body: |
460460
; CHECK: bb.0:
461461
; CHECK-NEXT: successors: %bb.1(0x80000000)
462462
; CHECK-NEXT: {{ $}}
463-
; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
463+
; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
464464
; CHECK-NEXT: {{ $}}
465465
; CHECK-NEXT: bb.1:
466466
; CHECK-NEXT: successors: %bb.1(0x80000000)

0 commit comments

Comments
 (0)