fix PR68428: ignore bb dominated by the scop->exit

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>

From-SVN: r230632
This commit is contained in:
Aditya Kumar 2015-11-19 23:06:18 +00:00 committed by Sebastian Pop
parent 2927ca4b24
commit a378e92255
4 changed files with 41 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2015-11-19 Aditya Kumar <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>
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 <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>

View File

@ -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)
{

View File

@ -1,3 +1,9 @@
2015-11-19 Aditya Kumar <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>
PR tree-optimization/68428
* gcc.dg/graphite/pr68428.c: New.
2015-11-19 Aditya Kumar <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>

View File

@ -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;
}