From 968eee2aa7033a5850dc7830f22220236d53f212 Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Wed, 19 Sep 2007 00:15:16 +0000 Subject: [PATCH] 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 --- lib/Transforms/Scalar/LoopIndexSplit.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/Transforms/Scalar/LoopIndexSplit.cpp b/lib/Transforms/Scalar/LoopIndexSplit.cpp index 92a6058b5a6..cb5060a6765 100644 --- a/lib/Transforms/Scalar/LoopIndexSplit.cpp +++ b/lib/Transforms/Scalar/LoopIndexSplit.cpp @@ -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++) {