aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2010-01-08 07:39:01 +0000
committerSebastian Pop <spop@gcc.gnu.org>2010-01-08 07:39:01 +0000
commitfd4a56fff2611fa6d840e801d8181bfac061f8e0 (patch)
tree3a6ff180c658ef9460fc25b2abf9ff49fe330a6c
parenteaffa76227b6b049f692a9958d24f5fc4f9d27d1 (diff)
downloadgcc-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.graphite9
-rw-r--r--gcc/graphite.c6
-rw-r--r--gcc/testsuite/gcc.dg/graphite/pr42521.c18
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];
+
+}