<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>Hi Andrew,</div><div><br></div><div>AFAIK, ReadyCycle - CurrCycle is not always >= 0,  (I use assert (ReadyCycle>= CurrCycle) to check)</div><div>

but these are unsigned types so will be underflow. (Sometimes, I got 2^32-x on MaxObservedStall)</div><div><br></div><div>I suggest maybe we should use signed temp var for this calculation?</div><div>Thanks!</div><div> </div>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 void SchedBoundary::releaseNode(SUnit *SU, unsigned ReadyCycle) {<br>
+  assert(SU->getInstr() && "Scheduled SUnit must have instr");<br>
+<br>
+#ifndef NDEBUG<br>
+  MaxObservedStall = std::max(ReadyCycle - CurrCycle, MaxObservedStall);<br>
+#endif<br>
+<br>
   if (ReadyCycle < MinReadyCycle)<br>
     MinReadyCycle = ReadyCycle;<br><br></blockquote></div>
</div></div>