]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/42521 (ICE: in graphite_loop_normal_form, at graphite-sese...
authorSebastian Pop <sebastian.pop@amd.com>
Fri, 8 Jan 2010 07:39:01 +0000 (07:39 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Fri, 8 Jan 2010 07:39:01 +0000 (07:39 +0000)
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

gcc/ChangeLog.graphite
gcc/graphite.c
gcc/testsuite/gcc.dg/graphite/pr42521.c [new file with mode: 0644]

index 379e35164577c05f080a9d051719a3d3a8406588..165f7ebec972110f1b95e9cf9bccaf9533a4337f 100644 (file)
@@ -1,3 +1,12 @@
+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
index 83d484aae561c5915f579efdefa0ffb133f57dbe..7037a3fa1a06561bff390d5241a35612dfeae734 100644 (file)
@@ -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 (file)
index 0000000..2695df5
--- /dev/null
@@ -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];
+
+}