MachineScheduler: add some book-keeping to fix an assert.
[oota-llvm.git] / lib / CodeGen / MachineScheduler.cpp
index 0baf2a6c1c2120ac6d0740cebe69ac897a641988..b37f689689f1c9168c5d061a35b1f831dd6a8c71 100644 (file)
@@ -1687,8 +1687,14 @@ bool SchedBoundary::checkHazard(SUnit *SU) {
     for (TargetSchedModel::ProcResIter
            PI = SchedModel->getWriteProcResBegin(SC),
            PE = SchedModel->getWriteProcResEnd(SC); PI != PE; ++PI) {
-      if (getNextResourceCycle(PI->ProcResourceIdx, PI->Cycles) > CurrCycle)
+      unsigned NRCycle = getNextResourceCycle(PI->ProcResourceIdx, PI->Cycles);
+      if (NRCycle > CurrCycle) {
+        MaxObservedStall = std::max(NRCycle - CurrCycle, MaxObservedStall);
+        DEBUG(dbgs() << "  SU(" << SU->NodeNum << ") "
+              << SchedModel->getResourceName(PI->ProcResourceIdx)
+              << "=" << NRCycle << "c\n");
         return true;
+      }
     }
   }
   return false;