diff options
author | Chris Lattner <sabre@nondot.org> | 2004-11-18 01:29:39 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-11-18 01:29:39 +0000 |
commit | 23b71c1e1e33219327b1c0edf43034dbe4c3ae90 (patch) | |
tree | 74175edd2800cb139f7325891171acda9172adf3 /lib/CodeGen | |
parent | 4b92ed6d584aaa34eab7a3ef60d277617adb9aca (diff) |
Rename some methods, use 'begin' instead of 'start', add new LiveInterval
iterator/begin/end members.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17930 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/LiveInterval.h | 17 | ||||
-rw-r--r-- | lib/CodeGen/RegAllocIterativeScan.cpp | 10 | ||||
-rw-r--r-- | lib/CodeGen/RegAllocLinearScan.cpp | 24 |
3 files changed, 29 insertions, 22 deletions
diff --git a/lib/CodeGen/LiveInterval.h b/lib/CodeGen/LiveInterval.h index d23e4131f6..87cb570306 100644 --- a/lib/CodeGen/LiveInterval.h +++ b/lib/CodeGen/LiveInterval.h @@ -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; diff --git a/lib/CodeGen/RegAllocIterativeScan.cpp b/lib/CodeGen/RegAllocIterativeScan.cpp index 4cdcc1d4dd..e5f7be7336 100644 --- a/lib/CodeGen/RegAllocIterativeScan.cpp +++ b/lib/CodeGen/RegAllocIterativeScan.cpp @@ -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; diff --git a/lib/CodeGen/RegAllocLinearScan.cpp b/lib/CodeGen/RegAllocLinearScan.cpp index 3025d25f21..83d90936c2 100644 --- a/lib/CodeGen/RegAllocLinearScan.cpp +++ b/lib/CodeGen/RegAllocLinearScan.cpp @@ -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)) |