OSDN Git Service

2007-11-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 28 Nov 2007 01:00:50 +0000 (01:00 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 28 Nov 2007 01:00:50 +0000 (01:00 +0000)
PR fortran/34227
* match.c (gfc_match_common): Add additional check for BLOCK DATA.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130483 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/match.c

index 1c7742c..fcb03bc 100644 (file)
@@ -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
index fe2a343..2586dd4 100644 (file)
@@ -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;