Fold open interval ends handling into
authorAlkis Evlogimenos <alkis@evlogimenos.com>
Fri, 16 Jan 2004 20:17:05 +0000 (20:17 +0000)
committerAlkis Evlogimenos <alkis@evlogimenos.com>
Fri, 16 Jan 2004 20:17:05 +0000 (20:17 +0000)
LiveIntervals::Interval::expiredAt() and simplify regalloc code.

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

include/llvm/CodeGen/LiveIntervalAnalysis.h
include/llvm/CodeGen/LiveIntervals.h
lib/CodeGen/LiveIntervalAnalysis.h
lib/CodeGen/RegAllocLinearScan.cpp

index 89c72377a844e9e8d1d6a1bc32e98a9de2811433..dd521a40c0fd54124e6e0d70d73fabcc0fdd3d80 100644 (file)
@@ -57,7 +57,7 @@ namespace llvm {
             }
 
             bool expiredAt(unsigned index) const {
-                return end() <= index;
+                return end() <= (index + 1);
             }
 
             bool liveAt(unsigned index) const;
index 89c72377a844e9e8d1d6a1bc32e98a9de2811433..dd521a40c0fd54124e6e0d70d73fabcc0fdd3d80 100644 (file)
@@ -57,7 +57,7 @@ namespace llvm {
             }
 
             bool expiredAt(unsigned index) const {
-                return end() <= index;
+                return end() <= (index + 1);
             }
 
             bool liveAt(unsigned index) const;
index 89c72377a844e9e8d1d6a1bc32e98a9de2811433..dd521a40c0fd54124e6e0d70d73fabcc0fdd3d80 100644 (file)
@@ -57,7 +57,7 @@ namespace llvm {
             }
 
             bool expiredAt(unsigned index) const {
-                return end() <= index;
+                return end() <= (index + 1);
             }
 
             bool liveAt(unsigned index) const;
index a88c55dd527956c81b06b2b963ce68960ec42a59..abd139009314fb67fafba812071dee00d4dcd4c3 100644 (file)
@@ -428,11 +428,8 @@ void RA::processActiveIntervals(IntervalPtrs::value_type cur)
     DEBUG(std::cerr << "\tprocessing active intervals:\n");
     for (IntervalPtrs::iterator i = active_.begin(); i != active_.end();) {
         unsigned reg = (*i)->reg;
-        // remove expired intervals. we expire earlier because this if
-        // an interval expires this is going to be the last use. in
-        // this case we can reuse the register for a def in the same
-        // instruction
-        if ((*i)->expiredAt(cur->start() + 1)) {
+        // remove expired intervals
+        if ((*i)->expiredAt(cur->start())) {
             DEBUG(std::cerr << "\t\tinterval " << **i << " expired\n");
             if (reg >= MRegisterInfo::FirstVirtualRegister) {
                 reg = v2pMap_[reg];
@@ -465,11 +462,8 @@ void RA::processInactiveIntervals(IntervalPtrs::value_type cur)
     for (IntervalPtrs::iterator i = inactive_.begin(); i != inactive_.end();) {
         unsigned reg = (*i)->reg;
 
-        // remove expired intervals. we expire earlier because this if
-        // an interval expires this is going to be the last use. in
-        // this case we can reuse the register for a def in the same
-        // instruction
-        if ((*i)->expiredAt(cur->start() + 1)) {
+        // remove expired intervals
+        if ((*i)->expiredAt(cur->start())) {
             DEBUG(std::cerr << "\t\t\tinterval " << **i << " expired\n");
             // remove from inactive
             i = inactive_.erase(i);