If the liveinterval of the source instruction has been extended, remove the IsKill marker.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34594 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp
index ce2e429..5e17a73 100644
--- a/lib/CodeGen/LiveIntervalAnalysis.cpp
+++ b/lib/CodeGen/LiveIntervalAnalysis.cpp
@@ -828,6 +828,12 @@
     IntB.MergeValueNumberInto(BValNo, ValLR->ValId);
   DOUT << "   result = "; IntB.print(DOUT, mri_);
   DOUT << "\n";
+
+  // If the source instruction was killing the source register before the
+  // merge, unset the isKill marker given the live range has been extended.
+  MachineOperand *MOK = ValLREndInst->findRegisterUseOperand(IntB.reg, true);
+  if (MOK)
+    MOK->unsetIsKill();
   
   // Finally, delete the copy instruction.
   RemoveMachineInstrFromMaps(CopyMI);