From: Aditya Kumar Date: Thu, 21 Jan 2016 02:13:42 +0000 (+0000) Subject: check for unstructured control flow X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8f2252625a841171aad0f7dda84f3811e03c7073;p=gcc.git check for unstructured control flow * graphite-scop-detection.c (scop_detection::harmful_loop_in_region): Discard unstructured if-then-else regions. Co-Authored-By: Sebastian Pop From-SVN: r232657 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4b593a8cc65..7e5bf1a6762 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-01-21 Aditya Kumar + Sebastian Pop + + * graphite-scop-detection.c (scop_detection::harmful_loop_in_region): + Discard unstructured if-then-else regions. + 2016-01-21 Aditya Kumar Sebastian Pop diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index d1b0fec1d4b..3f268a56c37 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))