LiveRanges are represented as half-open ranges. Fix the findLiveInMBBs code

and the LiveInterval.h top-level comment and accordingly. This fixes blocks
having spurious live-in registers in boundary cases.

llvm-svn: 60092
This commit is contained in:
Dan Gohman 2008-11-26 05:50:31 +00:00
parent 21148402d6
commit 3336b1f06b
2 changed files with 2 additions and 2 deletions

View File

@ -9,7 +9,7 @@
//
// This file implements the LiveRange and LiveInterval classes. Given some
// numbering of each the machine instructions an interval [i, j) is said to be a
// live interval for register v if there is no instruction with number j' > j
// live interval for register v if there is no instruction with number j' >= j
// such that v is live at j' and there is no instruction with number i' < i such
// that v is live at i'. In this implementation intervals can have holes,
// i.e. an interval might look like [1,20), [50,65), [1000,1001). Each

View File

@ -750,7 +750,7 @@ bool LiveIntervals::findLiveInMBBs(unsigned Start, unsigned End,
bool ResVal = false;
while (I != Idx2MBBMap.end()) {
if (I->first > End)
if (I->first >= End)
break;
MBBs.push_back(I->second);
ResVal = true;