mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-16 15:08:59 +00:00
Fix the scheduler's MaxObservedStall computation.
WenHan Gu pointed out this bug that results in an assert not being effective in some cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210846 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4ecff11794
commit
796f114767
@ -691,7 +691,7 @@ void ScheduleDAGMI::schedule() {
|
||||
}
|
||||
}
|
||||
// Notify the scheduling strategy before updating the DAG.
|
||||
// This sets the scheduled nodes ReadyCycle to CurrCycle. When updateQueues
|
||||
// This sets the scheduled node's ReadyCycle to CurrCycle. When updateQueues
|
||||
// runs, it can then use the accurate ReadyCycle time to determine whether
|
||||
// newly released nodes can move to the readyQ.
|
||||
SchedImpl->schedNode(SU, IsTopNode);
|
||||
@ -1747,7 +1747,11 @@ void SchedBoundary::releaseNode(SUnit *SU, unsigned ReadyCycle) {
|
||||
assert(SU->getInstr() && "Scheduled SUnit must have instr");
|
||||
|
||||
#ifndef NDEBUG
|
||||
MaxObservedStall = std::max(ReadyCycle - CurrCycle, MaxObservedStall);
|
||||
// ReadyCycle was been bumped up to the CurrCycle when this node was
|
||||
// scheduled, but CurrCycle may have been eagerly advanced immediately after
|
||||
// scheduling, so may now be greater than ReadyCycle.
|
||||
if (ReadyCycle > CurrCycle)
|
||||
MaxObservedStall = std::max(ReadyCycle - CurrCycle, MaxObservedStall);
|
||||
#endif
|
||||
|
||||
if (ReadyCycle < MinReadyCycle)
|
||||
|
Loading…
x
Reference in New Issue
Block a user