Remove live interval entries for an interval if we're eliminating its only VN.
authorOwen Anderson <resistor@mac.com>
Fri, 25 Jul 2008 21:08:41 +0000 (21:08 +0000)
committerOwen Anderson <resistor@mac.com>
Fri, 25 Jul 2008 21:08:41 +0000 (21:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54062 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/StrongPHIElimination.cpp

index a2bb81851117b192068b47755c38d441606eb764..9a9fba550b85f2534bf9dce7ca64d19f168c36d1 100644 (file)
@@ -794,7 +794,12 @@ void StrongPHIElimination::mergeLiveIntervals(unsigned primary,
                                    LI.getVNInfoAllocator());
   NewVN->hasPHIKill = true;
   LiveRange NewRange(RangeMergingIn->start, RangeMergingIn->end, NewVN);
                                    LI.getVNInfoAllocator());
   NewVN->hasPHIKill = true;
   LiveRange NewRange(RangeMergingIn->start, RangeMergingIn->end, NewVN);
-  RHS.removeRange(RangeMergingIn->start, RangeMergingIn->end, true);
+  
+  if (RHS.containsOneValue())
+    LI.removeInterval(RHS.reg);
+  else
+    RHS.removeRange(RangeMergingIn->start, RangeMergingIn->end, true);
+  
   LHS.addRange(NewRange);
 }
 
   LHS.addRange(NewRange);
 }