From: Jakob Stoklund Olesen Date: Sun, 16 Sep 2012 02:15:33 +0000 (+0000) Subject: Fix problem when using LiveRangeQuery with block entries. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=2131eb48875c7059eb04f0a324321e1e15e6597e;p=oota-llvm.git 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163990 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/CodeGen/LiveInterval.h b/include/llvm/CodeGen/LiveInterval.h index 3bce496b2b5..b4d0b125233 100644 --- a/include/llvm/CodeGen/LiveInterval.h +++ b/include/llvm/CodeGen/LiveInterval.h @@ -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.