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
diff --git a/lib/Transforms/Scalar/LoopIndexSplit.cpp b/lib/Transforms/Scalar/LoopIndexSplit.cpp
index 92a6058..cb5060a 100644
--- a/lib/Transforms/Scalar/LoopIndexSplit.cpp
+++ b/lib/Transforms/Scalar/LoopIndexSplit.cpp
@@ -528,6 +528,10 @@
   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++) {