In the following program, generic procedure "foo" can be distinguished between two procedure "foo1" and "foo2" by keywords of arguments.
But gfortran cannot compile this source code and output the same message twice. I think it is wrong behavior. $ cat test.f90 module m1 implicit none interface foo module procedure foo1 end interface contains subroutine foo1(j) integer :: j end subroutine end module module m2 implicit none interface foo module procedure foo2 end interface contains subroutine foo2(i) integer :: i end subroutine end module program test use m1 use m2 implicit none call foo(j=3) end program $ gfortran --version GNU Fortran 95 (GCC) 4.2.0 20060129 (experimental) Copyright (C) 2006 Free Software Foundation, Inc. GNU Fortran comes with NO WARRANTY, to the extent permitted by law. You may redistribute copies of GNU Fortran under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING $ gfortran test.f90 In file test.f90:24 use m1 1 Error: Ambiguous interfaces 'foo1' and 'foo2' in generic interface 'foo' at (1) In file test.f90:24 use m1 1 Error: Ambiguous interfaces 'foo1' and 'foo2' in generic interface 'foo' at (1) -- Summary: Rejects to call a generic procedure by argument keywords. Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: iguchi at coral dot t dot u-tokyo dot ac dot jp http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27112