aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CodeGen')
-rw-r--r--lib/CodeGen/StrongPHIElimination.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/CodeGen/StrongPHIElimination.cpp b/lib/CodeGen/StrongPHIElimination.cpp
index a2bb818511..9a9fba550b 100644
--- a/lib/CodeGen/StrongPHIElimination.cpp
+++ b/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);
}