Don't walk into predecessors in which the vreg is not live when doing shrinkwrapping.
authorOwen Anderson <resistor@mac.com>
Tue, 11 Nov 2008 22:11:27 +0000 (22:11 +0000)
committerOwen Anderson <resistor@mac.com>
Tue, 11 Nov 2008 22:11:27 +0000 (22:11 +0000)
This lets several failing tests get farther along, but doesn't completely fix any of them.

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

lib/CodeGen/PreAllocSplitting.cpp

index 09f002aa2658e2db65bbb3241178a066c1473cea..f7d8ab01026d0c672d21e58e34a0637b0470e579 100644 (file)
@@ -618,6 +618,8 @@ PreAllocSplitting::ShrinkWrapLiveInterval(VNInfo *ValNo, MachineBasicBlock *MBB,
       // Pred is the def bb and the def reaches other val#s, we must
       // allow the value to be live out of the bb.
       continue;
+    if (!CurrLI->liveAt(LIs->getMBBEndIdx(Pred)-1))
+      return;
     ShrinkWrapLiveInterval(ValNo, Pred, MBB, DefMBB, Visited,
                            Uses, UseMIs, UseMBBs);
   }