Rename some methods, use 'begin' instead of 'start', add new LiveInterval
authorChris Lattner <sabre@nondot.org>
Thu, 18 Nov 2004 01:29:39 +0000 (01:29 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 18 Nov 2004 01:29:39 +0000 (01:29 +0000)
iterator/begin/end members.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17930 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/LiveInterval.h
lib/CodeGen/LiveInterval.h
lib/CodeGen/RegAllocIterativeScan.cpp
lib/CodeGen/RegAllocLinearScan.cpp

index d23e4131f66a1ecea666aa6b2b6c1a3ba597ef11..87cb570306cb89f0e70f76f5222a86d0de108908 100644 (file)
@@ -76,6 +76,11 @@ namespace llvm {
       : reg(Reg), weight(Weight), NumValues(0) {
     }
 
+
+    typedef Ranges::iterator iterator;
+    iterator begin() { return ranges.begin(); }
+    iterator end()   { return ranges.end(); }
+
     void swap(LiveInterval& other) {
       std::swap(reg, other.reg);
       std::swap(weight, other.weight);
@@ -91,21 +96,21 @@ namespace llvm {
 
     bool empty() const { return ranges.empty(); }
 
-    /// start - Return the lowest numbered slot covered by interval.
-    unsigned start() const {
+    /// beginNumber - Return the lowest numbered slot covered by interval.
+    unsigned beginNumber() const {
       assert(!empty() && "empty interval for register");
       return ranges.front().start;
     }
 
-    /// end - return the maximum point of the interval of the whole,
+    /// endNumber - return the maximum point of the interval of the whole,
     /// exclusive.
-    unsigned end() const {
+    unsigned endNumber() const {
       assert(!empty() && "empty interval for register");
       return ranges.back().end;
     }
 
     bool expiredAt(unsigned index) const {
-      return end() <= (index + 1);
+      return endNumber() <= (index + 1);
     }
 
     bool liveAt(unsigned index) const;
@@ -142,7 +147,7 @@ namespace llvm {
     void removeRange(unsigned Start, unsigned End);
 
     bool operator<(const LiveInterval& other) const {
-      return start() < other.start();
+      return beginNumber() < other.beginNumber();
     }
 
     void dump() const;
index d23e4131f66a1ecea666aa6b2b6c1a3ba597ef11..87cb570306cb89f0e70f76f5222a86d0de108908 100644 (file)
@@ -76,6 +76,11 @@ namespace llvm {
       : reg(Reg), weight(Weight), NumValues(0) {
     }
 
+
+    typedef Ranges::iterator iterator;
+    iterator begin() { return ranges.begin(); }
+    iterator end()   { return ranges.end(); }
+
     void swap(LiveInterval& other) {
       std::swap(reg, other.reg);
       std::swap(weight, other.weight);
@@ -91,21 +96,21 @@ namespace llvm {
 
     bool empty() const { return ranges.empty(); }
 
-    /// start - Return the lowest numbered slot covered by interval.
-    unsigned start() const {
+    /// beginNumber - Return the lowest numbered slot covered by interval.
+    unsigned beginNumber() const {
       assert(!empty() && "empty interval for register");
       return ranges.front().start;
     }
 
-    /// end - return the maximum point of the interval of the whole,
+    /// endNumber - return the maximum point of the interval of the whole,
     /// exclusive.
-    unsigned end() const {
+    unsigned endNumber() const {
       assert(!empty() && "empty interval for register");
       return ranges.back().end;
     }
 
     bool expiredAt(unsigned index) const {
-      return end() <= (index + 1);
+      return endNumber() <= (index + 1);
     }
 
     bool liveAt(unsigned index) const;
@@ -142,7 +147,7 @@ namespace llvm {
     void removeRange(unsigned Start, unsigned End);
 
     bool operator<(const LiveInterval& other) const {
-      return start() < other.start();
+      return beginNumber() < other.beginNumber();
     }
 
     void dump() const;
index 4cdcc1d4dd221da849f71dd4e0947cbb5510cc29..e5f7be7336620c0774f05bc4c16613adc7d4586d 100644 (file)
@@ -270,7 +270,7 @@ void RA::processActiveIntervals(IntervalPtrs::value_type cur)
     unsigned reg = i->reg;
 
     // remove expired intervals
-    if (i->expiredAt(cur->start())) {
+    if (i->expiredAt(cur->beginNumber())) {
       DEBUG(std::cerr << "\t\tinterval " << *i << " expired\n");
       if (MRegisterInfo::isVirtualRegister(reg))
         reg = vrm_->getPhys(reg);
@@ -279,7 +279,7 @@ void RA::processActiveIntervals(IntervalPtrs::value_type cur)
       std::iter_swap(ii, --ie);
     }
     // move inactive intervals to inactive list
-    else if (!i->liveAt(cur->start())) {
+    else if (!i->liveAt(cur->beginNumber())) {
       DEBUG(std::cerr << "\t\tinterval " << *i << " inactive\n");
       if (MRegisterInfo::isVirtualRegister(reg))
         reg = vrm_->getPhys(reg);
@@ -305,13 +305,13 @@ void RA::processInactiveIntervals(IntervalPtrs::value_type cur)
     unsigned reg = i->reg;
 
     // remove expired intervals
-    if (i->expiredAt(cur->start())) {
+    if (i->expiredAt(cur->beginNumber())) {
       DEBUG(std::cerr << "\t\tinterval " << *i << " expired\n");
       // swap with last element and move end iterator back one position
       std::iter_swap(ii, --ie);
     }
     // move re-activated intervals in active list
-    else if (i->liveAt(cur->start())) {
+    else if (i->liveAt(cur->beginNumber())) {
       DEBUG(std::cerr << "\t\tinterval " << *i << " active\n");
       if (MRegisterInfo::isVirtualRegister(reg))
         reg = vrm_->getPhys(reg);
@@ -424,7 +424,7 @@ void RA::assignRegOrSpillAtInterval(IntervalPtrs::value_type cur)
   toSpill[minReg] = true;
   for (const unsigned* as = mri_->getAliasSet(minReg); *as; ++as)
     toSpill[*as] = true;
-  unsigned earliestStart = cur->start();
+  unsigned earliestStart = cur->beginNumber();
 
   std::set<unsigned> spilled;
 
index 3025d25f21b1e74e6ff2fd09b9a6eb0665fe2243..83d90936c25cd7e3eef0a94c3422a008b81eb62d 100644 (file)
@@ -29,7 +29,6 @@
 #include <cmath>
 #include <set>
 #include <queue>
-
 using namespace llvm;
 
 namespace {
@@ -45,7 +44,8 @@ namespace {
     const TargetMachine* tm_;
     const MRegisterInfo* mri_;
     LiveIntervals* li_;
-    typedef std::vector<LiveInterval*> IntervalPtrs;
+    typedef LiveInterval* IntervalPtr;
+    typedef std::vector<IntervalPtr> IntervalPtrs;
     IntervalPtrs handled_, fixed_, active_, inactive_;
     typedef std::priority_queue<LiveInterval*,
                                 IntervalPtrs,
@@ -231,13 +231,14 @@ void RA::initIntervalSets()
 void RA::processActiveIntervals(IntervalPtrs::value_type cur)
 {
   DEBUG(std::cerr << "\tprocessing active intervals:\n");
+
   IntervalPtrs::iterator ii = active_.begin(), ie = active_.end();
   while (ii != ie) {
     LiveInterval* i = *ii;
     unsigned reg = i->reg;
 
     // remove expired intervals
-    if (i->expiredAt(cur->start())) {
+    if (i->expiredAt(cur->beginNumber())) {
       DEBUG(std::cerr << "\t\tinterval " << *i << " expired\n");
       if (MRegisterInfo::isVirtualRegister(reg))
         reg = vrm_->getPhys(reg);
@@ -246,7 +247,7 @@ void RA::processActiveIntervals(IntervalPtrs::value_type cur)
       std::iter_swap(ii, --ie);
     }
     // move inactive intervals to inactive list
-    else if (!i->liveAt(cur->start())) {
+    else if (!i->liveAt(cur->beginNumber())) {
       DEBUG(std::cerr << "\t\tinterval " << *i << " inactive\n");
       if (MRegisterInfo::isVirtualRegister(reg))
         reg = vrm_->getPhys(reg);
@@ -267,18 +268,19 @@ void RA::processInactiveIntervals(IntervalPtrs::value_type cur)
 {
   DEBUG(std::cerr << "\tprocessing inactive intervals:\n");
   IntervalPtrs::iterator ii = inactive_.begin(), ie = inactive_.end();
+
   while (ii != ie) {
     LiveInterval* i = *ii;
     unsigned reg = i->reg;
 
     // remove expired intervals
-    if (i->expiredAt(cur->start())) {
+    if (i->expiredAt(cur->beginNumber())) {
       DEBUG(std::cerr << "\t\tinterval " << *i << " expired\n");
       // swap with last element and move end iterator back one position
       std::iter_swap(ii, --ie);
     }
     // move re-activated intervals in active list
-    else if (i->liveAt(cur->start())) {
+    else if (i->liveAt(cur->beginNumber())) {
       DEBUG(std::cerr << "\t\tinterval " << *i << " active\n");
       if (MRegisterInfo::isVirtualRegister(reg))
         reg = vrm_->getPhys(reg);
@@ -413,7 +415,7 @@ void RA::assignRegOrStackSlotAtInterval(LiveInterval* cur)
 
   // the earliest start of a spilled interval indicates up to where
   // in handled we need to roll back
-  unsigned earliestStart = cur->start();
+  unsigned earliestStart = cur->beginNumber();
 
   // set of spilled vregs (used later to rollback properly)
   std::set<unsigned> spilled;
@@ -431,7 +433,7 @@ void RA::assignRegOrStackSlotAtInterval(LiveInterval* cur)
         toSpill[vrm_->getPhys(reg)] &&
         cur->overlaps(**i)) {
       DEBUG(std::cerr << "\t\t\tspilling(a): " << **i << '\n');
-      earliestStart = std::min(earliestStart, (*i)->start());
+      earliestStart = std::min(earliestStart, (*i)->beginNumber());
       int slot = vrm_->assignVirt2StackSlot((*i)->reg);
       std::vector<LiveInterval*> newIs =
         li_->addIntervalsForSpills(**i, *vrm_, slot);
@@ -446,7 +448,7 @@ void RA::assignRegOrStackSlotAtInterval(LiveInterval* cur)
         toSpill[vrm_->getPhys(reg)] &&
         cur->overlaps(**i)) {
       DEBUG(std::cerr << "\t\t\tspilling(i): " << **i << '\n');
-      earliestStart = std::min(earliestStart, (*i)->start());
+      earliestStart = std::min(earliestStart, (*i)->beginNumber());
       int slot = vrm_->assignVirt2StackSlot((*i)->reg);
       std::vector<LiveInterval*> newIs =
         li_->addIntervalsForSpills(**i, *vrm_, slot);
@@ -462,7 +464,7 @@ void RA::assignRegOrStackSlotAtInterval(LiveInterval* cur)
   while (!handled_.empty()) {
     LiveInterval* i = handled_.back();
     // if this interval starts before t we are done
-    if (i->start() < earliestStart)
+    if (i->beginNumber() < earliestStart)
       break;
     DEBUG(std::cerr << "\t\t\tundo changes for: " << *i << '\n');
     handled_.pop_back();
@@ -505,7 +507,7 @@ void RA::assignRegOrStackSlotAtInterval(LiveInterval* cur)
   // put it in inactive if required)
   for (IntervalPtrs::iterator i = handled_.begin(), e = handled_.end(); 
        i != e; ++i) {
-    if (!(*i)->expiredAt(earliestStart) && (*i)->expiredAt(cur->start())) {
+    if (!(*i)->expiredAt(earliestStart) && (*i)->expiredAt(cur->beginNumber())){
       DEBUG(std::cerr << "\t\t\tundo changes for: " << **i << '\n');
       active_.push_back(*i);
       if (MRegisterInfo::isPhysicalRegister((*i)->reg))