From f69ab0e0c412606b86a9989adcfec25f528c9f49 Mon Sep 17 00:00:00 2001 From: Jerry DeLisle Date: Wed, 28 Nov 2007 01:00:50 +0000 Subject: re PR fortran/34227 (initialized symbol in COMMON: Missing checks) 2007-11-27 Jerry DeLisle PR fortran/34227 * match.c (gfc_match_common): Add additional check for BLOCK DATA. From-SVN: r130483 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/match.c | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 1c7742c..fcb03bc 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2007-11-27 Jerry DeLisle + + PR fortran/34227 + * match.c (gfc_match_common): Add additional check for BLOCK DATA. + 2007-11-27 Paul Thomas PR fortran/29389 diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index fe2a343..2586dd4 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -2783,6 +2783,16 @@ gfc_match_common (void) goto cleanup; } + if (((sym->value != NULL && sym->value->expr_type != EXPR_NULL) + || sym->attr.data) && gfc_current_state () != COMP_BLOCK_DATA) + { + if (gfc_notify_std (GFC_STD_GNU, "Initialized symbol '%s' at %C " + "can only be COMMON in " + "BLOCK DATA", sym->name) + == FAILURE) + goto cleanup; + } + if (gfc_add_in_common (&sym->attr, sym->name, NULL) == FAILURE) goto cleanup; -- cgit v1.1