mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-23 01:50:33 +08:00
trans-array.c (gfc_trans_array_constructor): Loop over the parents.
* trans-array.c (gfc_trans_array_constructor): Loop over the parents. From-SVN: r180891
This commit is contained in:
parent
5125d6d5d7
commit
fa168d9ff4
@ -1,3 +1,7 @@
|
||||
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>
|
||||
|
||||
* trans-array.c (gfc_set_loop_bounds_from_array_spec): Loop over the
|
||||
|
@ -1953,6 +1953,7 @@ trans_constant_array_constructor (gfc_ss * ss, tree type)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* 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 trans_constant_array_constructor. Returns the
|
||||
@ -2010,6 +2011,7 @@ trans_array_constructor (gfc_ss * ss, locus * where)
|
||||
gfc_loopinfo *loop;
|
||||
gfc_ss_info *ss_info;
|
||||
gfc_expr *expr;
|
||||
gfc_ss *s;
|
||||
|
||||
/* Save the old values for nested checking. */
|
||||
old_first_len = first_len;
|
||||
@ -2078,16 +2080,20 @@ trans_array_constructor (gfc_ss * ss, locus * where)
|
||||
if (expr->shape && loop->dimen > 1 && loop->to[0] == NULL_TREE)
|
||||
{
|
||||
/* We have a multidimensional parameter. */
|
||||
int n;
|
||||
for (n = 0; n < expr->rank; n++)
|
||||
{
|
||||
loop->from[n] = gfc_index_zero_node;
|
||||
loop->to[n] = gfc_conv_mpz_to_tree (expr->shape [n],
|
||||
gfc_index_integer_kind);
|
||||
loop->to[n] = fold_build2_loc (input_location, MINUS_EXPR,
|
||||
gfc_array_index_type,
|
||||
loop->to[n], gfc_index_one_node);
|
||||
}
|
||||
for (s = ss; s; s = s->parent)
|
||||
{
|
||||
int n;
|
||||
for (n = 0; n < s->loop->dimen; n++)
|
||||
{
|
||||
s->loop->from[n] = gfc_index_zero_node;
|
||||
s->loop->to[n] = gfc_conv_mpz_to_tree (expr->shape[s->dim[n]],
|
||||
gfc_index_integer_kind);
|
||||
s->loop->to[n] = fold_build2_loc (input_location, MINUS_EXPR,
|
||||
gfc_array_index_type,
|
||||
s->loop->to[n],
|
||||
gfc_index_one_node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (loop->to[0] == NULL_TREE)
|
||||
|
Loading…
x
Reference in New Issue
Block a user