- Removing the infamous r2rMap_ and rep() method. Now the coalescer will update

register defs and uses after each successful coalescing.
- Also removed a number of hacks and fixed some subtle kill information bugs.

llvm-svn: 47167
This commit is contained in:
Evan Cheng
2008-02-15 18:24:29 +00:00
parent 9215129f4e
commit 2ff2da89ab
6 changed files with 328 additions and 403 deletions

View File

@@ -44,6 +44,27 @@ bool LiveInterval::liveAt(unsigned I) const {
return r->contains(I);
}
// liveBeforeAndAt - Check if the interval is live at the index and the index
// just before it. If index is liveAt, check if it starts a new live range.
// If it does, then check if the previous live range ends at index-1.
bool LiveInterval::liveBeforeAndAt(unsigned I) const {
Ranges::const_iterator r = std::upper_bound(ranges.begin(), ranges.end(), I);
if (r == ranges.begin())
return false;
--r;
if (!r->contains(I))
return false;
if (I != r->start)
return true;
// I is the start of a live range. Check if the previous live range ends
// at I-1.
if (r == ranges.begin())
return false;
return r->end == I;
}
// overlaps - Return true if the intersection of the two live intervals is
// not empty.
//