From 09bf990eb869cc60f8b84b3c29f54b12d0520345 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Sat, 9 Apr 2016 15:28:24 +0000 Subject: Fix pdr accesses order 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. * gcc.dg/graphite/pr68953.c: New test. From-SVN: r234851 --- gcc/ChangeLog | 6 ++++++ gcc/graphite-sese-to-poly.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/graphite/pr68953.c | 30 ++++++++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/pr68953.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7f2180d..8d9a94d 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 b62789f8..22a09a1 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 fb1ff1e..1b8a9c7 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 0000000..12c632d --- /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; +} -- cgit v1.1