Skip to content

Commit dbdc9a4

Browse files
committed
Added test for the phi crash in pressure tracker
1 parent 3c2b1f3 commit dbdc9a4

File tree

2 files changed

+618
-7
lines changed

2 files changed

+618
-7
lines changed

llvm/lib/Target/AMDGPU/GCNRegPressure.cpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -549,22 +549,26 @@ bool GCNDownwardRPTracker::advanceBeforeNext(MachineInstr *MI,
549549
if (!S.liveAt(SI)) {
550550
if (It == LiveRegs.end()) {
551551
It = LiveRegs.find(MO.getReg());
552-
if (It == LiveRegs.end())
552+
if (!MRI->isSSA() && It == LiveRegs.end())
553553
llvm_unreachable("register isn't live");
554554
}
555-
auto PrevMask = It->second;
556-
It->second &= ~S.LaneMask;
557-
CurPressure.inc(MO.getReg(), PrevMask, It->second, *MRI);
555+
if (It != LiveRegs.end()) {
556+
auto PrevMask = It->second;
557+
It->second &= ~S.LaneMask;
558+
CurPressure.inc(MO.getReg(), PrevMask, It->second, *MRI);
559+
}
558560
}
559561
}
560562
if (It != LiveRegs.end() && It->second.none())
561563
LiveRegs.erase(It);
562564
} else if (!LI.liveAt(SI)) {
563565
auto It = LiveRegs.find(MO.getReg());
564-
if (It == LiveRegs.end())
566+
if (!MRI->isSSA() && It == LiveRegs.end())
565567
llvm_unreachable("register isn't live");
566-
CurPressure.inc(MO.getReg(), It->second, LaneBitmask::getNone(), *MRI);
567-
LiveRegs.erase(It);
568+
if (It != LiveRegs.end()) {
569+
CurPressure.inc(MO.getReg(), It->second, LaneBitmask::getNone(), *MRI);
570+
LiveRegs.erase(It);
571+
}
568572
}
569573
}
570574

0 commit comments

Comments
 (0)