Don't include the destination interval in the union when computing
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 21 Oct 2010 18:47:08 +0000 (18:47 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 21 Oct 2010 18:47:08 +0000 (18:47 +0000)
Parent - union(Y, ...). Doh.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117042 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SplitKit.cpp

index 278a91d97d2ec56c23e07160349bdb737e69b8de..88bf01800cf1942abd9241d43cd54cdb3dc5084f 100644 (file)
@@ -740,10 +740,10 @@ void SplitEditor::rewrite(unsigned reg) {
         break;
       }
     }
+    DEBUG(dbgs() << "  rewr BB#" << MI->getParent()->getNumber() << '\t'<< Idx);
     assert(LI && "No register was live at use");
     MO.setReg(LI->reg);
-    DEBUG(dbgs() << "  rewrite BB#" << MI->getParent()->getNumber() << '\t'
-                 << Idx << '\t' << *MI);
+    DEBUG(dbgs() << '\t' << *MI);
   }
 }
 
@@ -755,6 +755,8 @@ SplitEditor::addTruncSimpleRange(SlotIndex Start, SlotIndex End, VNInfo *VNI) {
   SmallVector<IIPair, 8> Iters;
   for (LiveRangeEdit::iterator LI = edit_.begin(), LE = edit_.end(); LI != LE;
        ++LI) {
+    if (*LI == dupli_.getLI())
+      continue;
     LiveInterval::const_iterator I = (*LI)->find(Start);
     LiveInterval::const_iterator E = (*LI)->end();
     if (I != E)