Filter loops where split condition's false branch is not empty. For example

for (int i = 0; i < N; ++i) {
  if (i == somevalue)
    dosomething();
   else
    dosomethingelse();
}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42121 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Devang Patel 2007-09-19 00:15:16 +00:00
parent 84ef08bfee
commit 968eee2aa7

View File

@ -528,6 +528,10 @@ bool LoopIndexSplit::processOneIterationLoop(SplitInfo &SD) {
if (!safeExitingBlock(SD, ExitCondition->getParent()))
return false;
// Filter loops where split condition's false branch is not empty.
if (ExitCondition->getParent() != Header->getTerminator()->getSuccessor(1))
return false;
// If split condition is not safe then do not process this loop.
// For example,
// for(int i = 0; i < N; i++) {