diff options
author | Janus Weil <janus@gcc.gnu.org> | 2008-08-14 23:15:59 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2008-08-14 23:15:59 +0200 |
commit | beb4bd6cf682a67cae7155eaebeea1b99229ab31 (patch) | |
tree | aa78450fe0cbc47d0224c6648e10b150996475c1 /gcc/fortran/resolve.c | |
parent | 157b0647a507b589d7651b80fe55275df54cead4 (diff) | |
download | gcc-beb4bd6cf682a67cae7155eaebeea1b99229ab31.zip gcc-beb4bd6cf682a67cae7155eaebeea1b99229ab31.tar.gz gcc-beb4bd6cf682a67cae7155eaebeea1b99229ab31.tar.bz2 |
re PR fortran/36705 (Procedure pointers with attributes statements)
2008-08-14 Janus Weil <janus@gcc.gnu.org>
PR fortran/36705
* symbol.c (check_conflict): Move conflict checks for (procedure,save)
and (procedure,intent) to resolve_fl_procedure.
* resolve.c (resolve_fl_procedure): Ditto.
2008-08-14 Janus Weil <janus@gcc.gnu.org>
PR fortran/36705
* gfortran.dg/argument_checking_7.f90: Modified.
* gfortran.dg/conflicts.f90: Modified.
* gfortran.dg/proc_decl_1.f90: Modified.
* gfortran.dg/proc_ptr_9.f90: New.
From-SVN: r139116
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index c6a241a..994cb71 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -7443,6 +7443,20 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag) } } + if (sym->attr.save == SAVE_EXPLICIT && !sym->attr.proc_pointer) + { + gfc_error ("PROCEDURE attribute conflicts with SAVE attribute " + "in '%s' at %L", sym->name, &sym->declared_at); + return FAILURE; + } + + if (sym->attr.intent && !sym->attr.proc_pointer) + { + gfc_error ("PROCEDURE attribute conflicts with INTENT attribute " + "in '%s' at %L", sym->name, &sym->declared_at); + return FAILURE; + } + return SUCCESS; } |