Add support for inactive intervals. This effectively reuses registers

for live ranges that fall into assigned registers' holes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10566 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alkis Evlogimenos
2003-12-21 05:43:40 +00:00
parent 1118d0fd94
commit 169cfd0196
5 changed files with 391 additions and 254 deletions

View File

@ -38,12 +38,10 @@ namespace llvm {
typedef std::pair<unsigned, unsigned> Range;
typedef std::vector<Range> Ranges;
unsigned reg; // the register of this interval
unsigned weight; // weight of this interval (number of uses)
Ranges ranges; // the ranges this register is valid
Interval(unsigned r)
: reg(r) {
}
Interval(unsigned r);
unsigned start() const {
assert(!ranges.empty() && "empty interval for register");
@ -59,6 +57,10 @@ namespace llvm {
return end() <= index;
}
bool liveAt(unsigned index) const;
bool overlaps(const Interval& other) const;
void addRange(unsigned start, unsigned end);
private:

View File

@ -38,12 +38,10 @@ namespace llvm {
typedef std::pair<unsigned, unsigned> Range;
typedef std::vector<Range> Ranges;
unsigned reg; // the register of this interval
unsigned weight; // weight of this interval (number of uses)
Ranges ranges; // the ranges this register is valid
Interval(unsigned r)
: reg(r) {
}
Interval(unsigned r);
unsigned start() const {
assert(!ranges.empty() && "empty interval for register");
@ -59,6 +57,10 @@ namespace llvm {
return end() <= index;
}
bool liveAt(unsigned index) const;
bool overlaps(const Interval& other) const;
void addRange(unsigned start, unsigned end);
private: