Let LiveInterval::addRange extend existing ranges, it will verify that value
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 13 Aug 2010 01:05:26 +0000 (01:05 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 13 Aug 2010 01:05:26 +0000 (01:05 +0000)
numbers match. The old check could accidentally leave holes in openli.

Also let useIntv add all ranges for the phi-def value inserted by
enterIntvAtEnd. This works as long at the value mapping is established in
enterIntvAtEnd.

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

lib/CodeGen/SplitKit.cpp

index 5193cf4ad0d4c7cd91dc30b13a3e51230e46cd8b..8ec2e1ee5b4f8e73a62f0259bc4aaea8a0e49bee 100644 (file)
@@ -465,9 +465,6 @@ void SplitEditor::enterIntvAtEnd(MachineBasicBlock &A, MachineBasicBlock &B) {
     VNIB = openli_->getNextValue(SlotIndex(StartB, true), 0, false,
                                  lis_.getVNInfoAllocator());
     VNIB->setIsPHIDef(true);
-    // Add a minimal range for the new value.
-    openli_->addRange(LiveRange(VNIB->def, std::min(EndB, CurB->end), VNIB));
-
     VNInfo *&mapVNI = valueMap_[CurB->valno];
     if (mapVNI) {
       // Multiple copies - must create PHI value.
@@ -496,8 +493,8 @@ void SplitEditor::useIntv(SlotIndex Start, SlotIndex End) {
 
   if (I != B) {
     --I;
-    // I begins before Start, but overlaps. openli may already have a value.
-    if (I->end > Start && !openli_->liveAt(Start))
+    // I begins before Start, but overlaps.
+    if (I->end > Start)
       openli_->addRange(LiveRange(Start, std::min(End, I->end),
                         mapValue(I->valno)));
     ++I;