aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2008-08-14 23:15:59 +0200
committerJanus Weil <janus@gcc.gnu.org>2008-08-14 23:15:59 +0200
commitbeb4bd6cf682a67cae7155eaebeea1b99229ab31 (patch)
treeaa78450fe0cbc47d0224c6648e10b150996475c1 /gcc/fortran/resolve.c
parent157b0647a507b589d7651b80fe55275df54cead4 (diff)
downloadgcc-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.c14
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;
}