Fix bug in LiveIntervals::Interval::overlaps and
LiveIntervals::Interval::liveAt. Both were considering the live ranges
closed in the end, when they are actually open.
llvm-svn: 10835
diff --git a/llvm/lib/CodeGen/LiveIntervals.cpp b/llvm/lib/CodeGen/LiveIntervals.cpp
index acc3211..fb57722 100644
--- a/llvm/lib/CodeGen/LiveIntervals.cpp
+++ b/llvm/lib/CodeGen/LiveIntervals.cpp
@@ -366,7 +366,7 @@
bool LiveIntervals::Interval::liveAt(unsigned index) const
{
Ranges::const_iterator r = ranges.begin();
- while (r != ranges.end() && index < r->second) {
+ while (r != ranges.end() && index < (r->second - 1)) {
if (index >= r->first)
return true;
++r;
@@ -381,7 +381,7 @@
while (i != ranges.end() && j != other.ranges.end()) {
if (i->first < j->first) {
- if (i->second > j->first) {
+ if ((i->second - 1) > j->first) {
return true;
}
else {
@@ -389,7 +389,7 @@
}
}
else if (j->first < i->first) {
- if (j->second > i->first) {
+ if ((j->second - 1) > i->first) {
return true;
}
else {