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>
PR fortran/36947
......
......@@ -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)
int 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)
{
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;
if (ctor->expr->expr_type == EXPR_CONSTANT)
gfc_set_constant_character_len (len, ctor->expr,
has_ts ? -1 : first_len);
}
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