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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60092 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2008-11-26 05:50:31 +00:00
parent 695d8ec33b
commit 2ad8245566
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;