This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/39290] Subroutine/function ambiguity in generics
- From: "mikael at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 18 Aug 2012 21:56:02 +0000
- Subject: [Bug fortran/39290] Subroutine/function ambiguity in generics
- Auto-submitted: auto-generated
- References: <bug-39290-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39290
--- Comment #4 from Mikael Morin <mikael at gcc dot gnu.org> 2012-08-18 21:56:02 UTC ---
(In reply to comment #3)
> Thus, I concur that it seems to be fixed. However, one could consider to
> include the two test cases of the IR in the testsuite - besides the invalid one
> of comment 0, the valid one of question 2 (see IR).
Actually, the valid test doesn't work as `qc' instead of `qr' is called in the
first call. Testcase:
! { dg-do run }
!
! PR fortran/39290
! Subroutine/function ambiguity in generics.
!
function ff()
ff = 4
end function ff
function cc()
cc = (5,6)
end function cc
subroutine qr(f)
real, external :: f
complex c
common /a/ r, c
r = f()
end subroutine
subroutine qc(f)
complex, external :: f
complex c
common /a/ r, c
c = f()
end subroutine
module m
interface q
subroutine qr(f)
real, external :: f
end subroutine
subroutine qc(f)
complex, external :: f
end subroutine
end interface q
end module m
program main
use m
external ff, cc
complex cc, c
common /a/ r, c
r = 1
c = (2, 3)
call q(ff)
!print *, r
if (r /= 4 ) call abort
!print *, c
if (c /= (2,3)) call abort
call q(cc)
!print *, r
if (r /= 4 ) call abort
!print *, c
if (c /= (5,6)) call abort
end