aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Franke <franke.daniel@gmail.com>2007-06-22 14:33:35 -0400
committerDaniel Franke <dfranke@gcc.gnu.org>2007-06-22 14:33:35 -0400
commit23bc73b56313bcae5095f1258710bd1485ead15d (patch)
treef47ac2f1bf690ffeb5ba5a8a8f4a7d777e4b20b0
parent147bbdd05159934639f00269720f82be8647bc5d (diff)
downloadgcc-23bc73b56313bcae5095f1258710bd1485ead15d.zip
gcc-23bc73b56313bcae5095f1258710bd1485ead15d.tar.gz
gcc-23bc73b56313bcae5095f1258710bd1485ead15d.tar.bz2
re PR fortran/31473 (gfortran does not detect duplicate EXTERNAL or INTRINSIC declarations)
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
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/symbol.c13
2 files changed, 11 insertions, 8 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index f323886..d0cbd0a 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -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
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index 5215c3e..3c11b64 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -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;