Don't try to split a loop when the controlling icmp instruction

doesn't have an IV-based operand. This fixes PR4471.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74399 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman
2009-06-27 22:58:27 +00:00
parent a1baee20c4
commit f7ca1611e2
2 changed files with 198 additions and 0 deletions

View File

@@ -258,6 +258,9 @@ bool LoopIndexSplit::runOnLoop(Loop *IncomingLoop, LPPassManager &LPM_Ref) {
IVExitValue = ExitCondition->getOperand(0);
if (!L->isLoopInvariant(IVExitValue))
return false;
if (!IVBasedValues.count(
ExitCondition->getOperand(IVExitValue == ExitCondition->getOperand(0))))
return false;
// If start value is more then exit value where induction variable
// increments by 1 then we are potentially dealing with an infinite loop.