diff options
author | Alkis Evlogimenos <alkis@evlogimenos.com> | 2003-12-21 05:43:40 +0000 |
---|---|---|
committer | Alkis Evlogimenos <alkis@evlogimenos.com> | 2003-12-21 05:43:40 +0000 |
commit | 169cfd01964fc03828a7f2cad5d710890fbb08d8 (patch) | |
tree | 4c90e694662b3a619eaba6670ba25739e2185077 /include | |
parent | 1118d0fd945eb2430dace89b7df7b1cf60f149f3 (diff) | |
download | llvm-169cfd01964fc03828a7f2cad5d710890fbb08d8.tar.gz llvm-169cfd01964fc03828a7f2cad5d710890fbb08d8.tar.bz2 llvm-169cfd01964fc03828a7f2cad5d710890fbb08d8.tar.xz |
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
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/CodeGen/LiveIntervalAnalysis.h | 10 | ||||
-rw-r--r-- | include/llvm/CodeGen/LiveIntervals.h | 10 |
2 files changed, 12 insertions, 8 deletions
diff --git a/include/llvm/CodeGen/LiveIntervalAnalysis.h b/include/llvm/CodeGen/LiveIntervalAnalysis.h index 1257e15771..7ef2e78ea6 100644 --- a/include/llvm/CodeGen/LiveIntervalAnalysis.h +++ b/include/llvm/CodeGen/LiveIntervalAnalysis.h @@ -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: diff --git a/include/llvm/CodeGen/LiveIntervals.h b/include/llvm/CodeGen/LiveIntervals.h index 1257e15771..7ef2e78ea6 100644 --- a/include/llvm/CodeGen/LiveIntervals.h +++ b/include/llvm/CodeGen/LiveIntervals.h @@ -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: |