diff options
author | Dan Gohman <gohman@apple.com> | 2008-06-23 23:40:09 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-06-23 23:40:09 +0000 |
commit | 0d8a61eb60091b607fe4673a4c09276bf418676c (patch) | |
tree | dc1cb3aeefbb2b53f004248067a1419026baa9a9 /llvm/lib/CodeGen/SelectionDAG | |
parent | 0cfc16100b1bc9b0accb1eeb61dbf81af985bfdf (diff) | |
download | bcm5719-llvm-0d8a61eb60091b607fe4673a4c09276bf418676c.tar.gz bcm5719-llvm-0d8a61eb60091b607fe4673a4c09276bf418676c.zip |
Use the new PriorityQueue in ScheduleDAGList too, which also
needs arbitrary-element removal.
llvm-svn: 52654
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp index ab6e92db46e..40c26c290c4 100644 --- a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp @@ -28,9 +28,9 @@ #include "llvm/Target/TargetInstrInfo.h" #include "llvm/Support/Debug.h" #include "llvm/Support/Compiler.h" +#include "llvm/ADT/PriorityQueue.h" #include "llvm/ADT/Statistic.h" #include <climits> -#include <queue> using namespace llvm; STATISTIC(NumNoops , "Number of noops inserted"); @@ -315,7 +315,7 @@ namespace { /// mobility. std::vector<unsigned> NumNodesSolelyBlocking; - std::priority_queue<SUnit*, std::vector<SUnit*>, latency_sort> Queue; + PriorityQueue<SUnit*, std::vector<SUnit*>, latency_sort> Queue; public: LatencyPriorityQueue() : Queue(latency_sort(this)) { } @@ -373,25 +373,9 @@ public: return V; } - /// remove - This is a really inefficient way to remove a node from a - /// priority queue. We should roll our own heap to make this better or - /// something. void remove(SUnit *SU) { - std::vector<SUnit*> Temp; - assert(!Queue.empty() && "Not in queue!"); - while (Queue.top() != SU) { - Temp.push_back(Queue.top()); - Queue.pop(); - assert(!Queue.empty() && "Not in queue!"); - } - - // Remove the node from the PQ. - Queue.pop(); - - // Add all the other nodes back. - for (unsigned i = 0, e = Temp.size(); i != e; ++i) - Queue.push(Temp[i]); + Queue.erase_one(SU); } // ScheduledNode - As nodes are scheduled, we look to see if there are any |