From: Owen Anderson Date: Fri, 25 Jul 2008 21:07:13 +0000 (+0000) Subject: Properly remap live ranges whose end indices are the end of the function. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=8d0cc0af5a4b4c08eb74b6e36761651b63816d06;p=oota-llvm.git Properly remap live ranges whose end indices are the end of the function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54061 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp index 9bd00372445..833cb95eb9f 100644 --- a/lib/CodeGen/LiveIntervalAnalysis.cpp +++ b/lib/CodeGen/LiveIntervalAnalysis.cpp @@ -168,8 +168,12 @@ void LiveIntervals::computeNumbering() { LI->end = getMBBEndIdx(J->second) + 1; } else { unsigned idx = index; - while (!OldI2MI[index]) ++index; - LI->end = mi2iMap_[OldI2MI[index]] + (idx == index ? offset : 0); + while (index < OldI2MI.size() && !OldI2MI[index]) ++index; + + if (index != OldI2MI.size()) + LI->end = mi2iMap_[OldI2MI[index]] + (idx == index ? offset : 0); + else + LI->end = InstrSlots::NUM * i2miMap_.size(); } // Remap the VNInfo def index, which works the same as the @@ -208,8 +212,13 @@ void LiveIntervals::computeNumbering() { } else { unsigned idx = index; while (!OldI2MI[index]) ++index; - vni->kills[i] = mi2iMap_[OldI2MI[index]] + - (idx == index ? offset : 0); + while (index < OldI2MI.size() && !OldI2MI[index]) ++index; + + if (index != OldI2MI.size()) + vni->kills[i] = mi2iMap_[OldI2MI[index]] + + (idx == index ? offset : 0); + else + vni->kills[i] = InstrSlots::NUM * i2miMap_.size(); } } }