loop.temp_dim is set by gfc_trans_create_temp_array; there should be no reason why that value wouldn't suit gfc_trans_constant_array_constructor, which has then no reason to set the value directly. This patch remove that code. Then, the loop argument is useless and can be removed too. The function is static, so it loses its gfc_ prefix along the way. OK?
2011-10-19 Mikael Morin <mik...@gcc.gnu.org>
* trans-array.c (gfc_trans_constant_array_constructor, trans_constant_array_constructor): Rename the former to the latter. Don't set the rank of the temporary for the loop. Remove then unused loop argument. (gfc_trans_array_constructor): Update call.
diff --git a/trans-array.c b/trans-array.c index f611302..c39fc9e 100644 --- a/trans-array.c +++ b/trans-array.c @@ -1849,8 +1849,7 @@ gfc_build_constant_array_constructor (gfc_expr * expr, tree type) gfc_build_constant_array_constructor. */ static void -gfc_trans_constant_array_constructor (gfc_loopinfo * loop, - gfc_ss * ss, tree type) +trans_constant_array_constructor (gfc_ss * ss, tree type) { gfc_ss_info *info; tree tmp; @@ -1871,14 +1870,11 @@ gfc_trans_constant_array_constructor (gfc_loopinfo * loop, info->end[i] = gfc_index_zero_node; info->stride[i] = gfc_index_one_node; } - - if (info->dimen > loop->temp_dim) - loop->temp_dim = info->dimen; } /* Helper routine of gfc_trans_array_constructor to determine if the bounds of the loop specified by LOOP are constant and simple enough - to use with gfc_trans_constant_array_constructor. Returns the + to use with trans_constant_array_constructor. Returns the iteration count of the loop if suitable, and NULL_TREE otherwise. */ static tree @@ -2033,7 +2029,7 @@ gfc_trans_array_constructor (gfc_loopinfo * loop, gfc_ss * ss, locus * where) tree size = constant_array_constructor_loop_size (loop); if (size && compare_tree_int (size, nelem) == 0) { - gfc_trans_constant_array_constructor (loop, ss, type); + trans_constant_array_constructor (ss, type); goto finish; } }