diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2010-01-08 07:39:01 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2010-01-08 07:39:01 +0000 |
commit | fd4a56fff2611fa6d840e801d8181bfac061f8e0 (patch) | |
tree | 3a6ff180c658ef9460fc25b2abf9ff49fe330a6c | |
parent | eaffa76227b6b049f692a9958d24f5fc4f9d27d1 (diff) | |
download | gcc-fd4a56fff2611fa6d840e801d8181bfac061f8e0.zip gcc-fd4a56fff2611fa6d840e801d8181bfac061f8e0.tar.gz gcc-fd4a56fff2611fa6d840e801d8181bfac061f8e0.tar.bz2 |
re PR tree-optimization/42521 (ICE: in graphite_loop_normal_form, at graphite-sese-to-poly.c:2844)
Fix PR42521.
2010-01-07 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/42521
* graphite.c (graphite_finalize): Call scev_reset.
(graphite_transform_loops): Do not call scev_reset between the code
generation of scops.
* testsuite/gcc.dg/graphite/pr42521.c: New.
From-SVN: r155728
-rw-r--r-- | gcc/ChangeLog.graphite | 9 | ||||
-rw-r--r-- | gcc/graphite.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/pr42521.c | 18 |
3 files changed, 29 insertions, 4 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 379e351..165f7eb 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,5 +1,14 @@ 2010-01-07 Sebastian Pop <sebastian.pop@amd.com> + PR middle-end/42521 + * graphite.c (graphite_finalize): Call scev_reset. + (graphite_transform_loops): Do not call scev_reset between the code + generation of scops. + + * testsuite/gcc.dg/graphite/pr42521.c: New. + +2010-01-07 Sebastian Pop <sebastian.pop@amd.com> + * graphite-interchange.c (memory_stride_in_loop): Renamed pdr_stride_in_loop. (memory_strides_in_loop): Renamed memory_strides_in_loop_1. diff --git a/gcc/graphite.c b/gcc/graphite.c index 83d484a..7037a3f 100644 --- a/gcc/graphite.c +++ b/gcc/graphite.c @@ -228,6 +228,7 @@ graphite_finalize (bool need_cfg_cleanup_p) { if (need_cfg_cleanup_p) { + scev_reset (); cleanup_tree_cfg (); profile_status = PROFILE_ABSENT; release_recorded_exits (); @@ -279,10 +280,7 @@ graphite_transform_loops (void) check_poly_representation (scop); if (transform_done) - { - scev_reset (); - need_cfg_cleanup_p = true; - } + need_cfg_cleanup_p = true; } htab_delete (bb_pbb_mapping); diff --git a/gcc/testsuite/gcc.dg/graphite/pr42521.c b/gcc/testsuite/gcc.dg/graphite/pr42521.c new file mode 100644 index 0000000..2695df5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr42521.c @@ -0,0 +1,18 @@ +/* { dg-options "-O3 -fgraphite-identity" } */ + +extern int *A; +extern int B[][4]; + +void foo(int im, int jm, int cond) +{ + int i, j; + if (cond) + for (i = 0; i < 256; i++) + A[i] = 0; + + for (i = 0; i < im; i++) + for (j = 1; j < jm; j++) + if (jm != 8 || j != jm >> 1) + B[j][0] ^= B[j-1][0]; + +} |