Simplify r132022 based on Cameron's feedback.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132071 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng 2011-05-25 18:17:13 +00:00
parent 4c62f765a3
commit 237d10db8c

View File

@ -919,18 +919,11 @@ void LoopUnswitch::RewriteLoopBodyWithConditionConstant(Loop *L, Value *LIC,
BasicBlock *Switch = SI->getParent(); BasicBlock *Switch = SI->getParent();
BasicBlock *SISucc = SI->getSuccessor(DeadCase); BasicBlock *SISucc = SI->getSuccessor(DeadCase);
BasicBlock *Latch = L->getLoopLatch(); BasicBlock *Latch = L->getLoopLatch();
// If the DeadCase successor dominates all of the predecessors of the // If the DeadCase successor dominates the loop latch, then the
// loop latch, then the transformation isn't safe since it will delete // transformation isn't safe since it will delete the sole predecessor edge
// the predecessor edges to the latch. // to the latch.
if (Latch) { if (Latch && DT->dominates(SISucc, Latch))
bool DominateAll = true; continue;
for (pred_iterator PI = pred_begin(Latch), PE = pred_end(Latch);
DominateAll && PI != PE; ++PI)
if (!DT->dominates(SISucc, *PI))
DominateAll = false;
if (DominateAll)
continue;
}
// FIXME: This is a hack. We need to keep the successor around // FIXME: This is a hack. We need to keep the successor around
// and hooked up so as to preserve the loop structure, because // and hooked up so as to preserve the loop structure, because