aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2006-12-27 13:46:47 +0000
committerPaul Thomas <pault@gcc.gnu.org>2006-12-27 13:46:47 +0000
commit9914f8cff9e43cc127de8e49d5d9751c6c3eedb8 (patch)
tree231b280ad1ab1a5c7cd73bfdbf36922437ed84e8 /gcc/fortran/resolve.c
parent223da52186b67c474717dd7f221dd53515af64f4 (diff)
downloadgcc-9914f8cff9e43cc127de8e49d5d9751c6c3eedb8.zip
gcc-9914f8cff9e43cc127de8e49d5d9751c6c3eedb8.tar.gz
gcc-9914f8cff9e43cc127de8e49d5d9751c6c3eedb8.tar.bz2
re PR fortran/20896 (ambiguous interface not detected)
2006-12-27 Paul Thomas <pault@gcc.gnu.org> PR fortran/20896 * interface.c (check_sym_interfaces): Try to resolve interface reference as a global symbol, if it is not a nodule procedure. (compare_actual_formal): Remove call to gfc_find_symbol; if the expression is already a variable it is locally declared and this has precedence. gfortran.h : Add prototype for resolve_global_procedure. resolve.c (resolve_global_procedure): Remove static attribute from function declaration. (resolve_fl_procedure): Remove symtree declaration and the redundant check for an ambiguous procedure. PR fortran/25135 * module.c (load_generic_interfaces): If the symbol is present and is not generic it is ambiguous. 2006-12-27 Paul Thomas <pault@gcc.gnu.org> PR fortran/20896 * gfortran.dg/interface_10.f90: New test. * gfortran.dg/dummy_procedure_1.f90: Add error for call s1(z), since z is already, locally a variable. PR fortran/25135 * gfortran.dg/generic_11.f90: New test. * gfortran.dg/interface_7.f90: Remove name clash between module name and procedure 'x' referenced in the interface. From-SVN: r120218
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c13
1 files changed, 1 insertions, 12 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index eaa939d..9794446 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -1156,7 +1156,7 @@ find_noncopying_intrinsics (gfc_symbol * fnsym, gfc_actual_arglist * actual)
reference. The corresponding code that is called in creating
global entities is parse.c. */
-static void
+void
resolve_global_procedure (gfc_symbol *sym, locus *where, int sub)
{
gfc_gsymbol * gsym;
@@ -5560,7 +5560,6 @@ static try
resolve_fl_procedure (gfc_symbol *sym, int mp_flag)
{
gfc_formal_arglist *arg;
- gfc_symtree *st;
if (sym->attr.ambiguous_interfaces && !sym->attr.referenced)
gfc_warning ("Although not referenced, '%s' at %L has ambiguous "
@@ -5570,16 +5569,6 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag)
&& resolve_fl_var_and_proc (sym, mp_flag) == FAILURE)
return FAILURE;
- st = gfc_find_symtree (gfc_current_ns->sym_root, sym->name);
- if (st && st->ambiguous
- && sym->attr.referenced
- && !sym->attr.generic)
- {
- gfc_error ("Procedure %s at %L is ambiguous",
- sym->name, &sym->declared_at);
- return FAILURE;
- }
-
if (sym->ts.type == BT_CHARACTER)
{
gfc_charlen *cl = sym->ts.cl;