Fix a bug that occurs when the last instruction in a range is dead


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15005 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp
index ebf9dcd..5fa7257 100644
--- a/lib/CodeGen/LiveIntervalAnalysis.cpp
+++ b/lib/CodeGen/LiveIntervalAnalysis.cpp
@@ -205,12 +205,15 @@
     const TargetRegisterClass* rc = mf_->getSSARegMap()->getRegClass(li.reg);
 
     for (LiveInterval::Ranges::const_iterator
-             i = li.ranges.begin(), e = li.ranges.end(); i != e; ++i) {
+              i = li.ranges.begin(), e = li.ranges.end(); i != e; ++i) {
         unsigned index = getBaseIndex(i->first);
         unsigned end = getBaseIndex(i->second-1) + InstrSlots::NUM;
-        for (; index < end; index += InstrSlots::NUM) {
+        for (; index != end; index += InstrSlots::NUM) {
             // skip deleted instructions
-            while (!getInstructionFromIndex(index)) index += InstrSlots::NUM;
+            while (index != end && !getInstructionFromIndex(index))
+                index += InstrSlots::NUM;
+            if (index == end) break;
+
             MachineBasicBlock::iterator mi = getInstructionFromIndex(index);
 
         for_operand: