mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-25 16:24:23 +00:00
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:
@ -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:
|
||||
|
@ -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:
|
||||
|
Reference in New Issue
Block a user