From: Sebastian Pop <s....@samsung.com> * graphite-scop-detection.c (scop_detection::harmful_loop_in_region): Discard unstructured if-then-else regions. --- gcc/graphite-scop-detection.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index a0c630b..f035e0d 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -1078,6 +1078,18 @@ scop_detection::harmful_loop_in_region (sese_l scop) const return true; } + /* Check for unstructured control flow: CFG not generated by structured + if-then-else. */ + if (bb->succs->length () > 1) + { + edge e; + edge_iterator ei; + FOR_EACH_EDGE (e, ei, bb->succs) + if (!dominated_by_p (CDI_POST_DOMINATORS, bb, e->dest) + && !dominated_by_p (CDI_DOMINATORS, e->dest, bb)) + return true; + } + /* Collect all loops in the current region. */ loop_p loop = bb->loop_father; if (loop_in_sese_p (loop, scop)) -- 2.5.0