* decl.c (build_struct): Rewrite loop over constructor elements.

From-SVN: r148608
This commit is contained in:
Ian Lance Taylor 2009-06-17 12:53:01 +00:00 committed by Ian Lance Taylor
parent 4bc3052992
commit 2f4d1994d0
2 changed files with 19 additions and 17 deletions

View File

@ -1,3 +1,7 @@
2009-06-16 Ian Lance Taylor <iant@google.com>
* decl.c (build_struct): Rewrite loop over constructor elements.
2009-06-16 Janus Weil <janus@gcc.gnu.org>
PR fortran/36947

View File

@ -1435,28 +1435,26 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr **init,
bool has_ts;
gfc_constructor *ctor = c->initializer->value.constructor;
bool first = true;
int first_len;
has_ts = (c->initializer->ts.cl
&& c->initializer->ts.cl->length_from_typespec);
for (; ctor; ctor = ctor->next)
if (ctor)
{
/* Remember the length of the first element for checking that
all elements *in the constructor* have the same length. This
need not be the length of the LHS! */
if (first)
{
gcc_assert (ctor->expr->expr_type == EXPR_CONSTANT);
gcc_assert (ctor->expr->ts.type == BT_CHARACTER);
first_len = ctor->expr->value.character.length;
first = false;
}
int first_len;
if (ctor->expr->expr_type == EXPR_CONSTANT)
gfc_set_constant_character_len (len, ctor->expr,
has_ts ? -1 : first_len);
/* Remember the length of the first element for checking
that all elements *in the constructor* have the same
length. This need not be the length of the LHS! */
gcc_assert (ctor->expr->expr_type == EXPR_CONSTANT);
gcc_assert (ctor->expr->ts.type == BT_CHARACTER);
first_len = ctor->expr->value.character.length;
for (; ctor; ctor = ctor->next)
{
if (ctor->expr->expr_type == EXPR_CONSTANT)
gfc_set_constant_character_len (len, ctor->expr,
has_ts ? -1 : first_len);
}
}
}
}