@@ -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