[llvm-commits] CVS: llvm/lib/CodeGen/LiveInterval.h RegAllocIterativeScan.cpp RegAllocLinearScan.cpp
Chris Lattner
lattner at cs.uiuc.edu
Wed Nov 17 17:29:53 PST 2004
Changes in directory llvm/lib/CodeGen:
LiveInterval.h updated: 1.8 -> 1.9
RegAllocIterativeScan.cpp updated: 1.17 -> 1.18
RegAllocLinearScan.cpp updated: 1.97 -> 1.98
---
Log message:
Rename some methods, use 'begin' instead of 'start', add new LiveInterval
iterator/begin/end members.
---
Diffs of the changes: (+29 -22)
Index: llvm/lib/CodeGen/LiveInterval.h
diff -u llvm/lib/CodeGen/LiveInterval.h:1.8 llvm/lib/CodeGen/LiveInterval.h:1.9
--- llvm/lib/CodeGen/LiveInterval.h:1.8 Sun Jul 25 01:23:01 2004
+++ llvm/lib/CodeGen/LiveInterval.h Wed Nov 17 19:29:39 2004
@@ -76,6 +76,11 @@
: 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 @@
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 @@
void removeRange(unsigned Start, unsigned End);
bool operator<(const LiveInterval& other) const {
- return start() < other.start();
+ return beginNumber() < other.beginNumber();
}
void dump() const;
Index: llvm/lib/CodeGen/RegAllocIterativeScan.cpp
diff -u llvm/lib/CodeGen/RegAllocIterativeScan.cpp:1.17 llvm/lib/CodeGen/RegAllocIterativeScan.cpp:1.18
--- llvm/lib/CodeGen/RegAllocIterativeScan.cpp:1.17 Thu Sep 2 16:24:33 2004
+++ llvm/lib/CodeGen/RegAllocIterativeScan.cpp Wed Nov 17 19:29:39 2004
@@ -270,7 +270,7 @@
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 @@
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 @@
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 @@
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: llvm/lib/CodeGen/RegAllocLinearScan.cpp
diff -u llvm/lib/CodeGen/RegAllocLinearScan.cpp:1.97 llvm/lib/CodeGen/RegAllocLinearScan.cpp:1.98
--- llvm/lib/CodeGen/RegAllocLinearScan.cpp:1.97 Thu Nov 4 22:47:37 2004
+++ llvm/lib/CodeGen/RegAllocLinearScan.cpp Wed Nov 17 19:29:39 2004
@@ -29,7 +29,6 @@
#include <cmath>
#include <set>
#include <queue>
-
using namespace llvm;
namespace {
@@ -45,7 +44,8 @@
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::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 @@
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 @@
{
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 @@
// 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 @@
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 @@
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 @@
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 @@
// 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))
More information about the llvm-commits
mailing list