summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/StrongPHIElimination.cpp
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2008-07-25 21:08:41 +0000
committerOwen Anderson <resistor@mac.com>2008-07-25 21:08:41 +0000
commitd9c8711d70d7c3cde0a87ba9d5d7bbcd8b209419 (patch)
treee568a45ec59ba4869475413194efeef720a94484 /llvm/lib/CodeGen/StrongPHIElimination.cpp
parent88499a35036cf5a5351b8f50dbc061348f308b53 (diff)
downloadbcm5719-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.cpp7
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);
}
OpenPOWER on IntegriCloud