This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/39290] Subroutine/function ambiguity in generics


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]