diff options
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); } |

