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
diff --git a/lib/CodeGen/LiveIntervalAnalysis.h b/lib/CodeGen/LiveIntervalAnalysis.h
index 1257e15..7ef2e78 100644
--- a/lib/CodeGen/LiveIntervalAnalysis.h
+++ b/lib/CodeGen/LiveIntervalAnalysis.h
@@ -38,12 +38,10 @@
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 @@
return end() <= index;
}
+ bool liveAt(unsigned index) const;
+
+ bool overlaps(const Interval& other) const;
+
void addRange(unsigned start, unsigned end);
private: