diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7f2180d232a..8d9a94d61f3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-04-09 Tom de Vries + + PR tree-optimization/68953 + * graphite-sese-to-poly.c (pdr_add_memory_accesses): Order accesses from + first to last subscript. + 2016-04-09 Jakub Jelinek PR tree-optimization/70586 diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index b62789f84c6..22a09a1782f 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -672,7 +672,7 @@ pdr_add_memory_accesses (isl_map *acc, dr_info &dri) aff = extract_affine (scop, afn, isl_space_domain (isl_map_get_space (acc))); - acc = set_index (acc, i + 1, aff); + acc = set_index (acc, nb_subscripts - i , aff); } return isl_map_coalesce (acc); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fb1ff1eb084..1b8a9c7015c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-04-09 Tom de Vries + + PR tree-optimization/68953 + * gcc.dg/graphite/pr68953.c: New test. + 2016-04-09 Dominique d'Humieres PR fortran/70592 diff --git a/gcc/testsuite/gcc.dg/graphite/pr68953.c b/gcc/testsuite/gcc.dg/graphite/pr68953.c new file mode 100644 index 00000000000..12c632dbbf0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr68953.c @@ -0,0 +1,30 @@ +/* { dg-do run } */ +/* { dg-options "-O1 -floop-nest-optimize" } */ + +extern void abort (void); + +int yu[4][1] = { { 1 }, { 2 }, { 3 }, { 4 } }; + +static void __attribute__((noinline,noclone)) +foo (void) +{ + int zh, ro; + + for (zh = 0; zh < 2; ++zh) + for (ro = 0; ro < 3; ++ro) + yu[ro][0] = yu[zh + 1][0]; +} + +int +main (void) +{ + foo (); + + if (yu[0][0] != 2 + || yu[1][0] != 2 + || yu[2][0] != 2 + || yu[3][0] != 4) + abort (); + + return 0; +}