re PR fortran/31473 (gfortran does not detect duplicate EXTERNAL or INTRINSIC declara...
authorDaniel Franke <franke.daniel@gmail.com>
Fri, 22 Jun 2007 18:33:35 +0000 (14:33 -0400)
committerDaniel Franke <dfranke@gcc.gnu.org>
Fri, 22 Jun 2007 18:33:35 +0000 (14:33 -0400)
2007-06-22  Daniel Franke  <franke.daniel@gmail.com>

        PR fortran/31473
        * symbol.c (gfc_copy_attr): Emit errors for duplicate
        EXTERNAL/INTRINSIC statements.

From-SVN: r125954

gcc/fortran/ChangeLog
gcc/fortran/symbol.c

index f323886..d0cbd0a 100644 (file)
@@ -1,3 +1,9 @@
+2007-06-22  Daniel Franke  <franke.daniel@gmail.com>
+
+       PR fortran/31473
+       * symbol.c (gfc_copy_attr): Emit errors for duplicate 
+       EXTERNAL/INTRINSIC statements.
+
 2007-06-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR fortran/32360
index 5215c3e..3c11b64 100644 (file)
@@ -1436,14 +1436,11 @@ gfc_copy_attr (symbol_attribute * dest, symbol_attribute * src, locus * where)
     goto fail;
   if (src->cray_pointee && gfc_add_cray_pointee (dest, where) == FAILURE)
     goto fail;    
-  
-  /* The subroutines that set these bits also cause flavors to be set,
-     and that has already happened in the original, so don't let it
-     happen again.  */
-  if (src->external)
-    dest->external = 1;
-  if (src->intrinsic)
-    dest->intrinsic = 1;
+
+  if (src->external && gfc_add_external (dest, where) == FAILURE)
+    goto fail;
+  if (src->intrinsic && gfc_add_intrinsic (dest, where) == FAILURE)
+    goto fail;
 
   return SUCCESS;