re PR middle-end/36286 (ICE with -ftree-loop-linear and -O1 and above)
authorSebastian Pop <sebastian.pop@amd.com>
Wed, 21 May 2008 23:13:00 +0000 (23:13 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Wed, 21 May 2008 23:13:00 +0000 (23:13 +0000)
2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>

PR tree-optimization/36286
PR tree-optimization/36287
* lambda-code.c (build_access_matrix): Do not use the loop->num
for computing the number of induction variables: use the loop depth
instead.

* testsuite/gcc.dg/tree-ssa/pr36287.c: New.
* testsuite/gfortran.dg/pr36286.f90: New.

From-SVN: r135741

gcc/ChangeLog
gcc/lambda-code.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/pr36287.c [new file with mode: 0644]
gcc/testsuite/gfortran.dg/pr36286.f90 [new file with mode: 0644]

index b71520e4550420d6259af1594727f5e5015cdc19..1bf285e82fe368f30824fcdcc007d0afb3639e2a 100644 (file)
@@ -1,3 +1,11 @@
+2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR tree-optimization/36287
+       PR tree-optimization/36286
+       * lambda-code.c (build_access_matrix): Do not use the loop->num
+       for computing the number of induction variables: use the loop depth
+       instead.
+
 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
 
        PR/36280
index 707591154e168a18447e2cec46ba29ea2aee8280..5ae74ffa1ce831196354a9520794ce888accd120 100644 (file)
@@ -2794,12 +2794,13 @@ build_access_matrix (data_reference_p data_reference,
   struct access_matrix *am = GGC_NEW (struct access_matrix);
   unsigned i, ndim = DR_NUM_DIMENSIONS (data_reference);
   struct loop *loop = bb_for_stmt (DR_STMT (data_reference))->loop_father;
-  unsigned nb_induction_vars = loop_depth (loop) - loop_nest_num + 1;
+  struct loop *loop_nest = get_loop (loop_nest_num);
+  unsigned nivs = loop_depth (loop) - loop_depth (loop_nest) + 1;
   unsigned lambda_nb_columns;
   lambda_vector_vec_p matrix;
 
   AM_LOOP_NEST_NUM (am) = loop_nest_num;
-  AM_NB_INDUCTION_VARS (am) = nb_induction_vars;
+  AM_NB_INDUCTION_VARS (am) = nivs;
   AM_PARAMETERS (am) = parameters;
 
   lambda_nb_columns = AM_NB_COLUMNS (am);
index 3a88c77c1a96de10c1f593f723fcad75eaf08902..9a033ede0a87a031e02331cb6898311efa985e5a 100644 (file)
@@ -1,3 +1,10 @@
+2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR tree-optimization/36287
+       PR tree-optimization/36286
+       * gcc.dg/tree-ssa/pr36287.c: New.
+       * gfortran.dg/pr36286.f90: New.
+
 2008-05-21  Tom Tromey  <tromey@redhat.com>
 
        PR preprocessor/27777:
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr36287.c b/gcc/testsuite/gcc.dg/tree-ssa/pr36287.c
new file mode 100644 (file)
index 0000000..51b77c7
--- /dev/null
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-loop-linear" } */
+
+int tab[2][2];
+
+int foo ()
+{
+  int i, j, k;
+
+  for (i = 0; i < 2; ++i)
+    for (j = 0; j < 2; ++j)
+      for (k = 0; k < 2; ++k) 
+       {}
+
+  for (i = 0; i < 2; ++i)
+    for (j = 0; j < 2; ++j)
+      if (i == 0)
+       tab[i][j] = 0;
+
+  return tab[0][1];
+}
+
diff --git a/gcc/testsuite/gfortran.dg/pr36286.f90 b/gcc/testsuite/gfortran.dg/pr36286.f90
new file mode 100644 (file)
index 0000000..bcdef08
--- /dev/null
@@ -0,0 +1,14 @@
+! { dg-do compile }
+! { dg-options "-O1 -ftree-loop-linear" }
+! PR tree-optimization/36286
+
+program test_count
+    integer, dimension(2,3) :: a, b
+    a = reshape( (/ 1, 3, 5, 2, 4, 6 /), (/ 2, 3 /))
+    b = reshape( (/ 0, 3, 5, 7, 4, 8 /), (/ 2, 3 /))
+    print '(3l6)', a.ne.b
+    print *, a(1,:).ne.b(1,:)
+    print *, a(2,:).ne.b(2,:)
+    print *, count(a.ne.b)
+end program test_count
+