LiveRangeEdit: Adapt eliminateDeadDef() to subregister liveness.

llvm-svn: 223882
diff --git a/llvm/lib/CodeGen/LiveRangeEdit.cpp b/llvm/lib/CodeGen/LiveRangeEdit.cpp
index a0fb712..634e93d 100644
--- a/llvm/lib/CodeGen/LiveRangeEdit.cpp
+++ b/llvm/lib/CodeGen/LiveRangeEdit.cpp
@@ -286,8 +286,16 @@
         if (TheDelegate)
           TheDelegate->LRE_WillShrinkVirtReg(LI.reg);
         LI.removeValNo(VNI);
-        if (LI.empty())
+        if (LI.empty()) {
           RegsToErase.push_back(Reg);
+        } else {
+          // Also remove the value in subranges.
+          for (LiveInterval::subrange_iterator S = LI.subrange_begin(),
+               SE = LI.subrange_end(); S != SE; ++S) {
+            if (VNInfo *SVNI = S->getVNInfoAt(Idx))
+              S->removeValNo(SVNI);
+          }
+        }
       }
     }
   }