aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2008-11-11 22:11:27 +0000
committerOwen Anderson <resistor@mac.com>2008-11-11 22:11:27 +0000
commit80fe8737eb0c563d5d518434672a600492486d93 (patch)
tree6abc52ffde41977873f905d787feab8a770bbda0
parentcd8e66a1efdb31f0514270387207fb8c63bae4ed (diff)
downloadexternal_llvm-80fe8737eb0c563d5d518434672a600492486d93.zip
external_llvm-80fe8737eb0c563d5d518434672a600492486d93.tar.gz
external_llvm-80fe8737eb0c563d5d518434672a600492486d93.tar.bz2
Don't walk into predecessors in which the vreg is not live when doing shrinkwrapping.
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
-rw-r--r--lib/CodeGen/PreAllocSplitting.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/CodeGen/PreAllocSplitting.cpp b/lib/CodeGen/PreAllocSplitting.cpp
index 09f002a..f7d8ab0 100644
--- a/lib/CodeGen/PreAllocSplitting.cpp
+++ b/lib/CodeGen/PreAllocSplitting.cpp
@@ -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);
}