Only worry about intervening kill if there are more than one live ranges in the interval.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37052 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp
index a996aea..00c212d 100644
--- a/lib/CodeGen/LiveIntervalAnalysis.cpp
+++ b/lib/CodeGen/LiveIntervalAnalysis.cpp
@@ -1073,9 +1073,11 @@
   // 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)