OSDN Git Service

If the liveinterval of the source instruction has been extended, remove the IsKill...
authorEvan Cheng <evan.cheng@apple.com>
Sun, 25 Feb 2007 09:41:59 +0000 (09:41 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Sun, 25 Feb 2007 09:41:59 +0000 (09:41 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34594 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/LiveIntervalAnalysis.cpp

index ce2e429..5e17a73 100644 (file)
@@ -828,6 +828,12 @@ bool LiveIntervals::AdjustCopiesBackFrom(LiveInterval &IntA, LiveInterval &IntB,
     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);