From fd4a56fff2611fa6d840e801d8181bfac061f8e0 Mon Sep 17 00:00:00 2001 From: Sebastian Pop Date: Fri, 8 Jan 2010 07:39:01 +0000 Subject: [PATCH] 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 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 --- gcc/ChangeLog.graphite | 9 +++++++++ gcc/graphite.c | 6 ++---- gcc/testsuite/gcc.dg/graphite/pr42521.c | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/pr42521.c diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 379e35164577..165f7ebec972 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,12 @@ +2010-01-07 Sebastian Pop + + 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 * graphite-interchange.c (memory_stride_in_loop): Renamed diff --git a/gcc/graphite.c b/gcc/graphite.c index 83d484aae561..7037a3fa1a06 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 000000000000..2695df57979a --- /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]; + +} -- 2.47.3