From: Andrew Trick Date: Thu, 24 May 2012 23:11:17 +0000 (+0000) Subject: misched: Use the same scheduling heuristics with -misched-topdown/bottomup. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=8ddd9d5b2bee3ccdb36aee4423ca4443d7b3dc32;p=oota-llvm.git misched: Use the same scheduling heuristics with -misched-topdown/bottomup. (except the part about choosing direction) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157437 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/MachineScheduler.cpp b/lib/CodeGen/MachineScheduler.cpp index 78a5b8d8cd5..662b16fa0a0 100644 --- a/lib/CodeGen/MachineScheduler.cpp +++ b/lib/CodeGen/MachineScheduler.cpp @@ -1168,11 +1168,25 @@ SUnit *ConvergingScheduler::pickNode(bool &IsTopNode) { } SUnit *SU; if (ForceTopDown) { - SU = DAG->getSUnit(DAG->top()); + SU = Top.pickOnlyChoice(); + if (!SU) { + SchedCandidate TopCand; + CandResult TopResult = + pickNodeFromQueue(Top.Available, DAG->getTopRPTracker(), TopCand); + assert(TopResult != NoCand && "failed to find the first candidate"); + SU = TopCand.SU; + } IsTopNode = true; } else if (ForceBottomUp) { - SU = DAG->getSUnit(priorNonDebug(DAG->bottom(), DAG->top())); + SU = Bot.pickOnlyChoice(); + if (!SU) { + SchedCandidate BotCand; + CandResult BotResult = + pickNodeFromQueue(Bot.Available, DAG->getBotRPTracker(), BotCand); + assert(BotResult != NoCand && "failed to find the first candidate"); + SU = BotCand.SU; + } IsTopNode = false; } else {