diff options
author | David Goodwin <david_goodwin@apple.com> | 2009-11-03 20:57:50 +0000 |
---|---|---|
committer | David Goodwin <david_goodwin@apple.com> | 2009-11-03 20:57:50 +0000 |
commit | 8501dbbe100ec36e8a8a8bf5dc35c13cbacf5f1a (patch) | |
tree | 7ac2fd6b383cca0057e8e7ca797df5ade476dba9 /llvm/lib/CodeGen/LatencyPriorityQueue.cpp | |
parent | 7f4d7ea3a9b7ea23d327246956bef5b207677f6a (diff) | |
download | bcm5719-llvm-8501dbbe100ec36e8a8a8bf5dc35c13cbacf5f1a.tar.gz bcm5719-llvm-8501dbbe100ec36e8a8a8bf5dc35c13cbacf5f1a.zip |
Do a scheduling pass ignoring anti-dependencies to identify candidate registers that should be renamed.
llvm-svn: 85939
Diffstat (limited to 'llvm/lib/CodeGen/LatencyPriorityQueue.cpp')
-rw-r--r-- | llvm/lib/CodeGen/LatencyPriorityQueue.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/LatencyPriorityQueue.cpp b/llvm/lib/CodeGen/LatencyPriorityQueue.cpp index 2e7b89c494f..794ecf7bd19 100644 --- a/llvm/lib/CodeGen/LatencyPriorityQueue.cpp +++ b/llvm/lib/CodeGen/LatencyPriorityQueue.cpp @@ -55,6 +55,7 @@ SUnit *LatencyPriorityQueue::getSingleUnscheduledPred(SUnit *SU) { SUnit *OnlyAvailablePred = 0; for (SUnit::const_pred_iterator I = SU->Preds.begin(), E = SU->Preds.end(); I != E; ++I) { + if (IgnoreAntiDep && (I->getKind() == SDep::Anti)) continue; SUnit &Pred = *I->getSUnit(); if (!Pred.isScheduled) { // We found an available, but not scheduled, predecessor. If it's the @@ -73,9 +74,11 @@ void LatencyPriorityQueue::push_impl(SUnit *SU) { // this node is the sole unscheduled node for. unsigned NumNodesBlocking = 0; for (SUnit::const_succ_iterator I = SU->Succs.begin(), E = SU->Succs.end(); - I != E; ++I) + I != E; ++I) { + if (IgnoreAntiDep && (I->getKind() == SDep::Anti)) continue; if (getSingleUnscheduledPred(I->getSUnit()) == SU) ++NumNodesBlocking; + } NumNodesSolelyBlocking[SU->NodeNum] = NumNodesBlocking; Queue.push(SU); @@ -88,8 +91,10 @@ void LatencyPriorityQueue::push_impl(SUnit *SU) { // the node available. void LatencyPriorityQueue::ScheduledNode(SUnit *SU) { for (SUnit::const_succ_iterator I = SU->Succs.begin(), E = SU->Succs.end(); - I != E; ++I) + I != E; ++I) { + if (IgnoreAntiDep && (I->getKind() == SDep::Anti)) continue; AdjustPriorityOfUnscheduledPreds(I->getSUnit()); + } } /// AdjustPriorityOfUnscheduledPreds - One of the predecessors of SU was just |