diff options
author | Daniel Franke <franke.daniel@gmail.com> | 2007-06-22 14:33:35 -0400 |
---|---|---|
committer | Daniel Franke <dfranke@gcc.gnu.org> | 2007-06-22 14:33:35 -0400 |
commit | 23bc73b56313bcae5095f1258710bd1485ead15d (patch) | |
tree | f47ac2f1bf690ffeb5ba5a8a8f4a7d777e4b20b0 | |
parent | 147bbdd05159934639f00269720f82be8647bc5d (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/symbol.c | 13 |
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; |