aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen/PreAllocSplitting.cpp
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 /lib/CodeGen/PreAllocSplitting.cpp
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
Diffstat (limited to 'lib/CodeGen/PreAllocSplitting.cpp')
-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);
}