From: Mikael Morin Date: Thu, 3 Nov 2011 23:28:25 +0000 (+0000) Subject: trans-array.c (set_vector_loop_bounds): Loop over the parents. X-Git-Tag: releases/gcc-4.7.0~2544 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f49afcb009a548aa46c36344d8ebe4d0648ae429;p=thirdparty%2Fgcc.git trans-array.c (set_vector_loop_bounds): Loop over the parents. * trans-array.c (set_vector_loop_bounds): Loop over the parents. From-SVN: r180892 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 196f3dae126f..47c4938f8e04 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,7 @@ +2011-11-03 Mikael Morin + + * trans-array.c (set_vector_loop_bounds): Loop over the parents. + 2011-11-03 Mikael Morin * trans-array.c (gfc_trans_array_constructor): Loop over the parents. diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 463a0a2cf6f6..25d9a37675c1 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -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. */