Commit 2f4d1994 by Ian Lance Taylor Committed by Ian Lance Taylor

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

From-SVN: r148608
parent 4bc30529
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> 2009-06-16 Janus Weil <janus@gcc.gnu.org>
PR fortran/36947 PR fortran/36947
......
...@@ -1435,28 +1435,26 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr **init, ...@@ -1435,28 +1435,26 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr **init,
bool has_ts; bool has_ts;
gfc_constructor *ctor = c->initializer->value.constructor; gfc_constructor *ctor = c->initializer->value.constructor;
bool first = true;
int first_len;
has_ts = (c->initializer->ts.cl has_ts = (c->initializer->ts.cl
&& c->initializer->ts.cl->length_from_typespec); && c->initializer->ts.cl->length_from_typespec);
for (; ctor; ctor = ctor->next) if (ctor)
{ {
/* Remember the length of the first element for checking that int first_len;
all elements *in the constructor* have the same length. This
need not be the length of the LHS! */ /* Remember the length of the first element for checking
if (first) 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)
{ {
gcc_assert (ctor->expr->expr_type == EXPR_CONSTANT); if (ctor->expr->expr_type == EXPR_CONSTANT)
gcc_assert (ctor->expr->ts.type == BT_CHARACTER); gfc_set_constant_character_len (len, ctor->expr,
first_len = ctor->expr->value.character.length; has_ts ? -1 : first_len);
first = false;
} }
if (ctor->expr->expr_type == EXPR_CONSTANT)
gfc_set_constant_character_len (len, ctor->expr,
has_ts ? -1 : first_len);
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment