From: Aditya Kumar Date: Thu, 19 Nov 2015 23:06:18 +0000 (+0000) Subject: fix PR68428: ignore bb dominated by the scop->exit X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a378e92255a31d26d0905e72de1abd91a161f758;p=gcc.git fix PR68428: ignore bb dominated by the scop->exit Co-Authored-By: Sebastian Pop From-SVN: r230632 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4b8bd47919c..949e12e580e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-11-19 Aditya Kumar + Sebastian Pop + + PR tree-optimization/68428 + * graphite-scop-detection.c (harmful_stmt_in_region): Do not iterate + over basic blocks outside the scop. + 2015-11-19 Aditya Kumar Sebastian Pop diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index e42b9bf9c41..84fe945e74a 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -1062,12 +1062,16 @@ scop_detection::harmful_stmt_in_region (sese_l scop) const basic_block bb; FOR_EACH_VEC_ELT (dom, i, bb) { - DEBUG_PRINT (dp << "\nVisiting bb_" << bb->index); + DEBUG_PRINT (dp << "Visiting bb_" << bb->index << "\n"); /* We don't want to analyze any bb outside sese. */ if (!dominated_by_p (CDI_POST_DOMINATORS, bb, exit_bb)) continue; + /* Basic blocks dominated by the scop->exit are not in the scop. */ + if (bb != exit_bb && dominated_by_p (CDI_DOMINATORS, bb, exit_bb)) + continue; + /* The basic block should not be part of an irreducible loop. */ if (bb->flags & BB_IRREDUCIBLE_LOOP) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1290aa0f47e..f107483de21 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2015-11-19 Aditya Kumar + Sebastian Pop + + PR tree-optimization/68428 + * gcc.dg/graphite/pr68428.c: New. + 2015-11-19 Aditya Kumar Sebastian Pop diff --git a/gcc/testsuite/gcc.dg/graphite/pr68428.c b/gcc/testsuite/gcc.dg/graphite/pr68428.c new file mode 100644 index 00000000000..2dc63b70a55 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr68428.c @@ -0,0 +1,23 @@ +/* { dg-options "-O2 -floop-nest-optimize" } */ + +int au[4] = { 0 }; + +int +main(void) +{ + int dc; + int m7; + int lv; + int f2; + int uq[3] = { 1 }; + for (dc = 0; dc < 2; ++dc) { + for (lv = 0; lv < 2; ++lv) + for (m7 = 0; m7 < 3; ++m7) { + if (uq[dc] == 0) + continue; + for (f2 = 0; f2 < 3; ++f2) + au[dc+2] = uq[f2]; + } + } + return 0; +}