]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/38409 ([graphite] ICE : in canonicalize_loop_ivs, at tree-parloops...
authorSebastian Pop <sebastian.pop@amd.com>
Fri, 12 Dec 2008 17:28:06 +0000 (17:28 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Fri, 12 Dec 2008 17:28:06 +0000 (17:28 +0000)
2008-12-12  Sebastian Pop  <sebastian.pop@amd.com>

PR middle-end/38409
* gcc.dg/graphite/pr38409.c: New.
* graphite.c (nb_reductions_in_loop): Use simple_iv.

From-SVN: r142716

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

index c386069bd3dabc7a985323dcf7e09746a3b9d971..9bedbaf604995474154ba6bf47bc9fc66bf5a10c 100644 (file)
@@ -1,3 +1,8 @@
+2008-12-12  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/38409
+       * graphite.c (nb_reductions_in_loop): Use simple_iv.
+
 2008-12-12  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
 
        * config/i386/x86intrin.h: New header file to support all x86 
index 877dffe2816c7de1389d01394b6431c0d8425a06..eda09f89471b25b834ed3a01e6d9671d8328ec5d 100644 (file)
@@ -2119,13 +2119,14 @@ nb_reductions_in_loop (loop_p loop)
     {
       gimple phi = gsi_stmt (gsi);
       tree scev;
+      affine_iv iv;
 
       if (!is_gimple_reg (PHI_RESULT (phi)))
        continue;
 
       scev = analyze_scalar_evolution (loop, PHI_RESULT (phi));
       scev = instantiate_parameters (loop, scev);
-      if (chrec_contains_undetermined (scev))
+      if (!simple_iv (loop, phi, PHI_RESULT (phi), &iv, true))
        res++;
     }
 
index a3c9d7c4e64ce40dd3ef9f159ae2a75f31164a77..34dfb65f071340933eb46aa3e80240083292077b 100644 (file)
@@ -1,3 +1,8 @@
+2008-12-12  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/38409
+       * gcc.dg/graphite/pr38409.c: New.
+
 2008-12-12 Daniel Franke  <franke.daniel@gmail.com>
 
        PR fortran/36355
diff --git a/gcc/testsuite/gcc.dg/graphite/pr38409.c b/gcc/testsuite/gcc.dg/graphite/pr38409.c
new file mode 100644 (file)
index 0000000..521ac35
--- /dev/null
@@ -0,0 +1,48 @@
+/* { dg-options "-O2 -floop-block" } */
+
+typedef struct test input ;
+struct test 
+{
+  int type ;
+  int symflag ;
+};
+Chv_copyEntriesToVector ( input *chv,double *dvec) 
+{
+  double *entries ;
+  int mm, nent;
+  int first, i, k , stride ;
+  if ( ((chv)->type == 1) ) 
+    {
+      for ( i = 0 ; i < 10 ; i++)
+        {
+         dvec[2*mm] = entries[2*k] ;
+         k += stride ;
+         stride -= 2 ;
+        }
+    }
+  return(mm) ; 
+}
+/* { dg-options "-O2 -floop-block" } */
+
+typedef struct test input ;
+struct test 
+{
+  int type ;
+  int symflag ;
+};
+Chv_copyEntriesToVector ( input *chv,double *dvec) 
+{
+  double *entries ;
+  int mm, nent;
+  int first, i, k , stride ;
+  if ( ((chv)->type == 1) ) 
+    {
+      for ( i = 0 ; i < 10 ; i++)
+        {
+         dvec[2*mm] = entries[2*k] ;
+         k += stride ;
+         stride -= 2 ;
+        }
+    }
+  return(mm) ; 
+}