On Sun, Jul 24, 2011 at 9:25 AM, Sebastian Pop <seb...@gmail.com> wrote: > 2011-07-23 Sebastian Pop <sebastian....@amd.com> > > PR middle-end/47653 > * graphite-scop-detection.c (graphite_can_represent_loop): Discard > loops using wrapping semantics. > > * gcc.dg/graphite/run-id-pr47653.c: New. > * gcc.dg/graphite/interchange-3.c: Do not use unsigned types for > induction variables. > * gcc.dg/graphite/scop-16.c: Same. > * gcc.dg/graphite/scop-17.c: Same. > * gcc.dg/graphite/scop-21.c: Same.
Ok. Thanks, Richard. > --- > gcc/ChangeLog | 6 ++++++ > gcc/graphite-scop-detection.c | 18 +++++++++--------- > gcc/testsuite/ChangeLog | 10 ++++++++++ > gcc/testsuite/gcc.dg/graphite/interchange-3.c | 2 +- > gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c | 17 +++++++++++++++++ > gcc/testsuite/gcc.dg/graphite/scop-16.c | 2 +- > gcc/testsuite/gcc.dg/graphite/scop-17.c | 2 +- > gcc/testsuite/gcc.dg/graphite/scop-21.c | 2 +- > .../testsuite/libgomp.graphite/force-parallel-1.c | 2 +- > 9 files changed, 47 insertions(+), 14 deletions(-) > create mode 100644 gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c > > diff --git a/gcc/ChangeLog b/gcc/ChangeLog > index 36347d6..2d147b8 100644 > --- a/gcc/ChangeLog > +++ b/gcc/ChangeLog > @@ -1,5 +1,11 @@ > 2011-07-23 Sebastian Pop <sebastian....@amd.com> > > + PR middle-end/47653 > + * graphite-scop-detection.c (graphite_can_represent_loop): Discard > + loops using wrapping semantics. > + > +2011-07-23 Sebastian Pop <sebastian....@amd.com> > + > PR middle-end/47691 > * graphite.c (graphite_initialize): Call scev_const_prop when > flag_tree_scev_cprop is not set. > diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c > index 45c6c75..3460568 100644 > --- a/gcc/graphite-scop-detection.c > +++ b/gcc/graphite-scop-detection.c > @@ -378,17 +378,17 @@ harmful_stmt_in_bb (basic_block scop_entry, loop_p > outer_loop, basic_block bb) > static bool > graphite_can_represent_loop (basic_block scop_entry, loop_p loop) > { > - tree niter = number_of_latch_executions (loop); > + tree niter; > + struct tree_niter_desc niter_desc; > > - /* Number of iterations unknown. */ > - if (chrec_contains_undetermined (niter)) > - return false; > - > - /* Number of iterations not affine. */ > - if (!graphite_can_represent_expr (scop_entry, loop, niter)) > - return false; > + /* FIXME: For the moment, graphite cannot be used on loops that > + iterate using induction variables that wrap. */ > > - return true; > + return number_of_iterations_exit (loop, single_exit (loop), &niter_desc, > false) > + && niter_desc.control.no_overflow > + && (niter = number_of_latch_executions (loop)) > + && !chrec_contains_undetermined (niter) > + && graphite_can_represent_expr (scop_entry, loop, niter); > } > > /* Store information needed by scopdet_* functions. */ > diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog > index 5f9b79d..c3ded27 100644 > --- a/gcc/testsuite/ChangeLog > +++ b/gcc/testsuite/ChangeLog > @@ -1,5 +1,15 @@ > 2011-07-23 Sebastian Pop <sebastian....@amd.com> > > + PR middle-end/47653 > + * gcc.dg/graphite/run-id-pr47653.c: New. > + * gcc.dg/graphite/interchange-3.c: Do not use unsigned types for > + induction variables. > + * gcc.dg/graphite/scop-16.c: Same. > + * gcc.dg/graphite/scop-17.c: Same. > + * gcc.dg/graphite/scop-21.c: Same. > + > +2011-07-23 Sebastian Pop <sebastian....@amd.com> > + > PR middle-end/47691 > * gfortran.dg/graphite/id-pr47691.f: New. > > diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-3.c > b/gcc/testsuite/gcc.dg/graphite/interchange-3.c > index 26ec4d9..1419749 100644 > --- a/gcc/testsuite/gcc.dg/graphite/interchange-3.c > +++ b/gcc/testsuite/gcc.dg/graphite/interchange-3.c > @@ -12,7 +12,7 @@ double u[1782225]; > static void __attribute__((noinline)) > foo (int N, int *res) > { > - unsigned int i, j; > + int i, j; > double sum = 0; > for (i = 0; i < N; i++) > { > diff --git a/gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c > b/gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c > new file mode 100644 > index 0000000..b62b891 > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c > @@ -0,0 +1,17 @@ > +/* { dg-options "-O -fstack-check=generic -ftree-pre -fgraphite-identity" } > */ > + > +int main () > +{ > + int i, j; > + int x[8][8]; > + for (i = 0; i < 8; i++) > + for (j = i; j < 8; j++) > + x[i][j] = 4; > + > + for (i = 0; i < 8; i++) > + for (j = i; j < 8; j++) > + if (x[i][j] != 4) > + __builtin_abort (); > + > + return 0; > +} > diff --git a/gcc/testsuite/gcc.dg/graphite/scop-16.c > b/gcc/testsuite/gcc.dg/graphite/scop-16.c > index 0849e86..83cbb96 100644 > --- a/gcc/testsuite/gcc.dg/graphite/scop-16.c > +++ b/gcc/testsuite/gcc.dg/graphite/scop-16.c > @@ -6,7 +6,7 @@ int test () > { > int a[N][N]; > int b[N][N]; > - unsigned i, j; > + int i, j; > > for (i = 0; i < N; i++) > for (j = 0; j < N; j++) > diff --git a/gcc/testsuite/gcc.dg/graphite/scop-17.c > b/gcc/testsuite/gcc.dg/graphite/scop-17.c > index ee37aea..a7dff5f 100644 > --- a/gcc/testsuite/gcc.dg/graphite/scop-17.c > +++ b/gcc/testsuite/gcc.dg/graphite/scop-17.c > @@ -5,7 +5,7 @@ void foo (int); > int test () > { > int a[N][N]; > - unsigned i, j; > + int i, j; > > for (i = 0; i < N; i++) > for (j = 0; j < N; j++) > diff --git a/gcc/testsuite/gcc.dg/graphite/scop-21.c > b/gcc/testsuite/gcc.dg/graphite/scop-21.c > index 5e58834..1cbad5d 100644 > --- a/gcc/testsuite/gcc.dg/graphite/scop-21.c > +++ b/gcc/testsuite/gcc.dg/graphite/scop-21.c > @@ -3,7 +3,7 @@ void foo (int); > int test () > { > int a[N+6]; > - unsigned i; > + int i; > > for (i = 0; i < N; i++) > { > diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-1.c > b/libgomp/testsuite/libgomp.graphite/force-parallel-1.c > index 7f043d8..71ed332 100644 > --- a/libgomp/testsuite/libgomp.graphite/force-parallel-1.c > +++ b/libgomp/testsuite/libgomp.graphite/force-parallel-1.c > @@ -23,7 +23,7 @@ int main(void) > } > > /* Check that parallel code generation part make the right answer. */ > -/* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 2 > "graphite" } } */ > +/* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 2 > "graphite" { xfail *-*-* } } } */ > /* { dg-final { cleanup-tree-dump "graphite" } } */ > /* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */ > /* { dg-final { cleanup-tree-dump "parloops" } } */ > -- > 1.7.4.1 > >