After PR 33997 turned out to be no bug, there is the following program, which gfortran wrongly accepts.
A bit oddly the Fortran standard does not distinguish between variables and functions and subroutines are wild matches. The following is the relevant part from the Fortran 2003 standard ("16.2.3 Restrictions on generic declarations"): "Two dummy arguments are distinguishable if neither is a subroutine and neither is TKR compatible (5.1.1.2) with the other." module ambiguous implicit none interface both module procedure test1, test2 end interface both contains function test1(x) implicit integer(x) integer test1 test1 = 1 end function test1 function test2(x) interface subroutine x() end subroutine x end interface integer test2 test2 = 2 end function test2 subroutine test3 end subroutine test3 end module ambiguous program main use ambiguous implicit none write(*,*) both(1) write(*,*) both(test3) end program main -- Summary: Accepts invalid: Ambigiuous interface with subroutine. Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: accepts-invalid Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: burnus at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34004