From: Ian Lance Taylor Date: Wed, 17 Jun 2009 12:53:01 +0000 (+0000) Subject: * decl.c (build_struct): Rewrite loop over constructor elements. X-Git-Tag: releases/gcc-4.5.0~5159 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2f4d1994d0aee81eb9b6234db264d89d2b7f911a;p=thirdparty%2Fgcc.git * decl.c (build_struct): Rewrite loop over constructor elements. From-SVN: r148608 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 12aa9dce0f52..39bc27f05207 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,7 @@ +2009-06-16 Ian Lance Taylor + + * decl.c (build_struct): Rewrite loop over constructor elements. + 2009-06-16 Janus Weil PR fortran/36947 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 1a4ca3616dcd..021392d427c1 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -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); } } }