mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
Fix this code to correctly handle loops with multiple exits. Until
now, this hasn't mattered, because ScalarEvolution hasn't been able to compute trip counts for loops with multiple exits. But it will soon. llvm-svn: 73864
This commit is contained in:
parent
1a33c92bb2
commit
8426522d55
@ -299,11 +299,11 @@ void IndVarSimplify::RewriteLoopExitValues(Loop *L,
|
||||
// If this instruction is dead now, delete it.
|
||||
RecursivelyDeleteTriviallyDeadInstructions(Inst);
|
||||
|
||||
// See if this is a single-entry LCSSA PHI node. If so, we can (and
|
||||
// have to) remove
|
||||
// the PHI entirely. This is safe, because the NewVal won't be variant
|
||||
// If we're inserting code into the exit block rather than the
|
||||
// preheader, we can (and have to) remove the PHI entirely.
|
||||
// This is safe, because the NewVal won't be variant
|
||||
// in the loop, so we don't need an LCSSA phi node anymore.
|
||||
if (NumPreds == 1) {
|
||||
if (ExitBlocks.size() == 1) {
|
||||
PN->replaceAllUsesWith(ExitVal);
|
||||
RecursivelyDeleteTriviallyDeadInstructions(PN);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user