OSDN Git Service

* trans-array.c (set_vector_loop_bounds): Loop over the parents.
authormikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Nov 2011 23:28:25 +0000 (23:28 +0000)
committermikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Nov 2011 23:28:25 +0000 (23:28 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180892 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-array.c

index 196f3da..47c4938 100644 (file)
@@ -1,5 +1,9 @@
 2011-11-03  Mikael Morin  <mikael@gcc.gnu.org>
 
+       * trans-array.c (set_vector_loop_bounds): Loop over the parents.
+
+2011-11-03  Mikael Morin  <mikael@gcc.gnu.org>
+
        * trans-array.c (gfc_trans_array_constructor): Loop over the parents.
 
 2011-11-03  Mikael Morin  <mikael@gcc.gnu.org>
index 463a0a2..25d9a37 100644 (file)
@@ -2197,14 +2197,18 @@ set_vector_loop_bounds (gfc_ss * ss)
   int dim;
 
   info = &ss->info->data.array;
-  loop = ss->loop;
 
-  for (n = 0; n < loop->dimen; n++)
+  for (; ss; ss = ss->parent)
     {
-      dim = ss->dim[n];
-      if (info->ref->u.ar.dimen_type[dim] == DIMEN_VECTOR
-         && loop->to[n] == NULL)
+      loop = ss->loop;
+
+      for (n = 0; n < loop->dimen; n++)
        {
+         dim = ss->dim[n];
+         if (info->ref->u.ar.dimen_type[dim] != DIMEN_VECTOR
+             || loop->to[n] != NULL)
+           continue;
+
          /* Loop variable N indexes vector dimension DIM, and we don't
             yet know the upper bound of loop variable N.  Set it to the
             difference between the vector's upper and lower bounds.  */