Fix problem when using LiveRangeQuery with block entries.

A value that is live in to a basic block should be returned by valueIn()
in LiveRangeQuery(getMBBStartIdx(MBB)), unless it is a PHI-def which
should be returned by valueDefined() instead.

Current code isn't using this functionality. Future code will.

llvm-svn: 163990
This commit is contained in:
Jakob Stoklund Olesen 2012-09-16 02:15:33 +00:00
parent 239ccf7e3a
commit d086379b21

View File

@ -499,7 +499,9 @@ namespace llvm {
if (I == E)
return;
// Is this an instruction live-in segment?
if (SlotIndex::isEarlierInstr(I->start, Idx)) {
// If Idx is the start index of a basic block, include live-in segments
// that start at Idx.getBaseIndex().
if (I->start <= Idx.getBaseIndex()) {
EarlyVal = I->valno;
EndPoint = I->end;
// Move to the potentially live-out segment.