Support SCoPs with multiple entry edges.

Regions that have multiple entry edges are very common. A simple if condition
yields e.g. such a region:

  if
 /   \
then  else
 \   /
for_region

This for_region contains two entry edges 'then' -> 'for_region' and 'else' -> 'for_region'.

Previously we scheduled the RegionSimplify pass to translate such regions into
simple regions. With this patch, we now support them natively when the region is
in -loop-simplify form, which means the entry block should not be a loop header.

Contributed by:  Star Tan <tanmx_star@yeah.net>

llvm-svn: 179586
diff --git a/polly/lib/CodeGen/CodeGeneration.cpp b/polly/lib/CodeGen/CodeGeneration.cpp
index 833d20b..ad9b6e2 100644
--- a/polly/lib/CodeGen/CodeGeneration.cpp
+++ b/polly/lib/CodeGen/CodeGeneration.cpp
@@ -986,16 +986,10 @@
   bool runOnScop(Scop &S) {
     ParallelLoops.clear();
 
-    Region &R = S.getRegion();
+    assert(!S.getRegion().isTopLevelRegion()
+           && "Top level regions are not supported");
 
-    assert(!R.isTopLevelRegion() && "Top level regions are not supported");
-    assert(R.getEnteringBlock() && "Only support regions with a single entry");
-
-    if (!R.getExitingBlock()) {
-      BasicBlock *newExit = createSingleExitEdge(&R, this);
-      for (Region::const_iterator RI = R.begin(), RE = R.end(); RI != RE; ++RI)
-        (*RI)->replaceExitRecursive(newExit);
-    }
+    simplifyRegion(&S, this);
 
     BasicBlock *StartBlock = executeScopConditionally(S, this);