Only worry about intervening kill if there are more than one live ranges in the interval.
authorEvan Cheng <evan.cheng@apple.com>
Mon, 14 May 2007 21:23:51 +0000 (21:23 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Mon, 14 May 2007 21:23:51 +0000 (21:23 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37052 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/LiveIntervalAnalysis.cpp

index a996aea4816ada8f163c1e45d7654a1e5eef8543..00c212d4b8098d4ea49d86224b6af3d1ebb8db7c 100644 (file)
@@ -1073,9 +1073,11 @@ bool LiveIntervals::JoinCopy(MachineInstr *CopyMI,
   // have clobbered values for this range.
   if (MRegisterInfo::isPhysicalRegister(repDstReg)) {
     // Unset unnecessary kills.
-    for (LiveInterval::Ranges::const_iterator I = SrcInt.begin(),
-           E = SrcInt.end(); I != E; ++I)
-      unsetRegisterKills(I->start, I->end, repDstReg);
+    if (!DstInt.containsOneValue()) {
+      for (LiveInterval::Ranges::const_iterator I = SrcInt.begin(),
+             E = SrcInt.end(); I != E; ++I)
+        unsetRegisterKills(I->start, I->end, repDstReg);
+    }
 
     // Update the liveintervals of sub-registers.
     for (const unsigned *AS = mri_->getSubRegisters(repDstReg); *AS; ++AS)