diff options
| author | Owen Anderson <resistor@mac.com> | 2008-07-25 21:08:41 +0000 |
|---|---|---|
| committer | Owen Anderson <resistor@mac.com> | 2008-07-25 21:08:41 +0000 |
| commit | d9c8711d70d7c3cde0a87ba9d5d7bbcd8b209419 (patch) | |
| tree | e568a45ec59ba4869475413194efeef720a94484 /llvm/lib/CodeGen/StrongPHIElimination.cpp | |
| parent | 88499a35036cf5a5351b8f50dbc061348f308b53 (diff) | |
| download | bcm5719-llvm-d9c8711d70d7c3cde0a87ba9d5d7bbcd8b209419.tar.gz bcm5719-llvm-d9c8711d70d7c3cde0a87ba9d5d7bbcd8b209419.zip | |
Remove live interval entries for an interval if we're eliminating its only VN.
llvm-svn: 54062
Diffstat (limited to 'llvm/lib/CodeGen/StrongPHIElimination.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/StrongPHIElimination.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/StrongPHIElimination.cpp b/llvm/lib/CodeGen/StrongPHIElimination.cpp index a2bb8185111..9a9fba550b8 100644 --- a/llvm/lib/CodeGen/StrongPHIElimination.cpp +++ b/llvm/lib/CodeGen/StrongPHIElimination.cpp @@ -794,7 +794,12 @@ void StrongPHIElimination::mergeLiveIntervals(unsigned primary, 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); } |

