summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAlkis Evlogimenos <alkis@evlogimenos.com>2003-12-21 05:43:40 +0000
committerAlkis Evlogimenos <alkis@evlogimenos.com>2003-12-21 05:43:40 +0000
commit169cfd01964fc03828a7f2cad5d710890fbb08d8 (patch)
tree4c90e694662b3a619eaba6670ba25739e2185077 /include
parent1118d0fd945eb2430dace89b7df7b1cf60f149f3 (diff)
downloadllvm-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.h10
-rw-r--r--include/llvm/CodeGen/LiveIntervals.h10
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: