aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2007-11-28 01:00:50 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2007-11-28 01:00:50 +0000
commitf69ab0e0c412606b86a9989adcfec25f528c9f49 (patch)
treef6cd3b76517d9176e32ec352a4ca0af301e851d0
parent9ffb37ced135f28d411eefddbc49facca5af6d6f (diff)
downloadgcc-f69ab0e0c412606b86a9989adcfec25f528c9f49.zip
gcc-f69ab0e0c412606b86a9989adcfec25f528c9f49.tar.gz
gcc-f69ab0e0c412606b86a9989adcfec25f528c9f49.tar.bz2
re PR fortran/34227 (initialized symbol in COMMON: Missing checks)
2007-11-27 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/34227 * match.c (gfc_match_common): Add additional check for BLOCK DATA. From-SVN: r130483
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/match.c10
2 files changed, 15 insertions, 0 deletions
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 <jvdelisle@gcc.gnu.org>
+
+ PR fortran/34227
+ * match.c (gfc_match_common): Add additional check for BLOCK DATA.
+
2007-11-27 Paul Thomas <pault@gcc.gnu.org>
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;