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:
parent
2927ca4b24
commit
a378e92255
@ -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>
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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>
|
||||
|
||||
|
23
gcc/testsuite/gcc.dg/graphite/pr68428.c
Normal file
23
gcc/testsuite/gcc.dg/graphite/pr68428.c
Normal 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user