diff options
author | pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-12-20 13:48:06 +0000 |
---|---|---|
committer | pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-12-20 13:48:06 +0000 |
commit | 3186f695660bb621c576ff78e8851517799b697f (patch) | |
tree | 006a73693cd6f5f41909b3e2d5aff9801697221d /gcc/fortran/resolve.c | |
parent | a30b29a7777cc383807116c38f3d172b7678d950 (diff) | |
download | ppe42-gcc-3186f695660bb621c576ff78e8851517799b697f.tar.gz ppe42-gcc-3186f695660bb621c576ff78e8851517799b697f.zip |
2006-12-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29992
* interface.c (check_sym_interfaces): Module procedures in a
generic must be use associated or contained in the module.
* decl.c (gfc_match_modproc): Set attribute mod_proc.
* gfortran.h (symbol_attribute): Add mod_proc atribute.
PR fortran/30081
* resolve.c (resolve_generic_f, resolve_generic_s): Use
gfc_intrinsic_name to find out if the function is intrinsic
because it does not have to be a generic intrinsic to be
overloaded.
2006-12-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29992
* gfortran.dg/generic_9.f90: New test.
PR fortran/30081
* gfortran.dg/generic_10.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120072 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 33ef7481470..519d92ab9b7 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -1215,9 +1215,9 @@ generic: goto generic; } - /* Last ditch attempt. */ - - if (!gfc_generic_intrinsic (expr->symtree->n.sym->name)) + /* Last ditch attempt. See if the reference is to an intrinsic + that possesses a matching interface. 14.1.2.4 */ + if (!gfc_intrinsic_name (sym->name, 0)) { gfc_error ("There is no specific function for the generic '%s' at %L", expr->symtree->n.sym->name, &expr->where); @@ -1675,9 +1675,11 @@ generic: goto generic; } - /* Last ditch attempt. */ + /* Last ditch attempt. See if the reference is to an intrinsic + that possesses a matching interface. 14.1.2.4 */ sym = c->symtree->n.sym; - if (!gfc_generic_intrinsic (sym->name)) + + if (!gfc_intrinsic_name (sym->name, 1)) { gfc_error ("There is no specific subroutine for the generic '%s' at %L", |