+2006-11-28 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/20880
+ * resolve.c (resolve_fl_procedure): Error if procedure is
+ ambiguous modified to require attr.referenced.
+
2006-11-26 Francois-Xavier Coudert <coudert@clipper.ens.fr>
PR fortran/29892
return FAILURE;
st = gfc_find_symtree (gfc_current_ns->sym_root, sym->name);
- if (st && st->ambiguous && !sym->attr.generic)
+ if (st && st->ambiguous
+ && sym->attr.referenced
+ && !sym->attr.generic)
{
gfc_error ("Procedure %s at %L is ambiguous",
sym->name, &sym->declared_at);
+2006-11-28 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/20880
+ * gfortran.dg/interface_3.f90: Modify errors.
+
2006-11-28 Ben Elliston <bje@au.ibm.com>
* lib/gcc-defs.exp (${tool}_check_compile): xfail test cases that
end interface
end module
-! This is the original PR
-subroutine my_sub (a) ! { dg-error "is ambiguous" }
+module test_mod2
+interface
+ function my_fun (a)
+ real a, my_fun
+ end function
+end interface
+end module
+
+
+! This is the original PR, excepting that the error requires the symbol
+! to be referenced.
+subroutine my_sub (a)
use test_mod
real a
+ call my_sub (a) ! { dg-error "ambiguous reference" }
print *, a
end subroutine
-integer function my_fun (a) ! { dg-error "is ambiguous" }
+integer function my_fun (a)
use test_mod
real a
print *, a
real a
print *, a
end subroutine
+
+subroutine thy_fun (a)
+ use test_mod
+ use test_mod2 ! OK because there is no reference to my_fun
+ print *, a
+end subroutine thy_fun
+
+subroutine his_fun (a)
+ use test_mod
+ use test_mod2
+ print *, my_fun (a) ! { dg-error "ambiguous reference" }
+end subroutine his_fun
+
! { dg-final { cleanup-modules "test_mod" } }