]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/34227 (initialized symbol in COMMON: Missing checks)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Wed, 28 Nov 2007 01:00:50 +0000 (01:00 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Wed, 28 Nov 2007 01:00:50 +0000 (01:00 +0000)
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

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

index 1c7742cd5b5c092c935afa9ff2d77778f6614f63..fcb03bc8385c763eaedfad40b19b068db34263ae 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 fe2a343bebcc029083b4316b9d95ee2b34fed666..2586dd4c2ca8c92ae281b95567520b1a000f9e21 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;