Index: src/IceRegAlloc.h |
diff --git a/src/IceRegAlloc.h b/src/IceRegAlloc.h |
index 9b9992cdfcd443c507d0f424fd23e239a2d5145e..4ecae52fa4823b8a668ca5623b6ca7ee36d3b60a 100644 |
--- a/src/IceRegAlloc.h |
+++ b/src/IceRegAlloc.h |
@@ -33,12 +33,24 @@ public: |
void dump(Cfg *Func) const; |
private: |
+ typedef std::vector<Variable *> OrderedRanges; |
+ typedef std::vector<Variable *> UnorderedRanges; |
+ |
void initForGlobal(); |
void initForInfOnly(); |
+ // Move an item from the From set to the To set. From[Index] is |
+ // pushed onto the end of To[], then the item is efficiently removed |
+ // from From[] by effectively swapping it with the last item in |
+ // From[] and then popping it from the back. As such, the caller is |
+ // best off iterating over From[] in reverse order to avoid the need |
+ // for special handling of the iterator. |
+ void moveItem(UnorderedRanges &From, SizeT Index, UnorderedRanges &To) { |
+ To.push_back(From[Index]); |
+ From[Index] = From.back(); |
+ From.pop_back(); |
+ } |
Cfg *const Func; |
- typedef std::vector<Variable *> OrderedRanges; |
- typedef std::list<Variable *> UnorderedRanges; |
OrderedRanges Unhandled; |
// UnhandledPrecolored is a subset of Unhandled, specially collected |
// for faster processing. |