When spilling an register, introduce a new temporary for each of its
spills. This allows for more flexibility when allocating registers for
spill code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13907 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/LiveIntervalAnalysis.h b/lib/CodeGen/LiveIntervalAnalysis.h
index ee28cf6..dda1637 100644
--- a/lib/CodeGen/LiveIntervalAnalysis.h
+++ b/lib/CodeGen/LiveIntervalAnalysis.h
@@ -80,9 +80,9 @@
}
};
- struct EndPointComp {
- bool operator()(const Interval& lhs, const Interval& rhs) {
- return lhs.ranges.back().second < rhs.ranges.back().second;
+ struct StartPointPtrComp {
+ bool operator()(const Interval* lhs, const Interval* rhs) {
+ return lhs->ranges.front().first < rhs->ranges.front().first;
}
};
@@ -164,7 +164,9 @@
Intervals& getIntervals() { return intervals_; }
- void updateSpilledInterval(Interval& i, VirtRegMap& vrm, int slot);
+ std::vector<Interval*> addIntervalsForSpills(const Interval& i,
+ VirtRegMap& vrm,
+ int slot);
private:
/// computeIntervals - compute live intervals