From: Mikael Morin Date: Thu, 3 Nov 2011 22:42:58 +0000 (+0000) Subject: trans-array.c (gfc_conv_loop_setup, [...]): Move specloop arrays clearing from the... X-Git-Tag: releases/gcc-4.7.0~2555 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b2028d0b943dff90a98b9c095298ea6413238a88;p=thirdparty%2Fgcc.git trans-array.c (gfc_conv_loop_setup, [...]): Move specloop arrays clearing from the former to the latter. * trans-array.c (gfc_conv_loop_setup, gfc_trans_create_temp_array): Move specloop arrays clearing from the former to the latter. From-SVN: r180881 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0d0e730b9cba..af37e211ca0a 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2011-11-03 Mikael Morin + + * trans-array.c (gfc_conv_loop_setup, gfc_trans_create_temp_array): + Move specloop arrays clearing from the former to the latter. + 2011-11-03 Mikael Morin * trans-array.c (set_loop_bounds): Separate the beginning of diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 302f937989cd..545f2fb21a90 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -902,6 +902,11 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post, pre); loop->from[n] = gfc_index_zero_node; + /* We have just changed the loop bounds, we must clear the + corresponding specloop, so that delta calculation is not skipped + later in set_delta. */ + loop->specloop[n] = NULL; + /* We are constructing the temporary's descriptor based on the loop dimensions. As the dimensions may be accessed in arbitrary order (think of transpose) the size taken from the n'th loop may not map @@ -4136,7 +4141,6 @@ gfc_conv_loop_setup (gfc_loopinfo * loop, locus * where) { gfc_ss *tmp_ss; tree tmp; - int n; set_loop_bounds (loop); @@ -4172,9 +4176,6 @@ gfc_conv_loop_setup (gfc_loopinfo * loop, locus * where) false, true, false, where); } - for (n = 0; n < loop->temp_dim; n++) - loop->specloop[loop->order[n]] = NULL; - /* For array parameters we don't have loop variables, so don't calculate the translations. */ if (loop->array_parameter)