The following test program calls the wrong routine :

[EMAIL PROTECTED] test]$ gfortran test3.f90
[EMAIL PROTECTED] test]$ a.out
 odfamilycnames

With ifort (or g95, lf95, SUN f90) the result is :

[EMAIL PROTECTED] test]$ ifort test3.f90
[EMAIL PROTECTED] test]$ a.out
 odfamilycname

File test3.f90 :

MODULE test

   TYPE odbase ; INTEGER :: value ; END TYPE

   INTERFACE odfname
      MODULE PROCEDURE odfamilycname,odfamilycnames
   END INTERFACE

   CONTAINS

   SUBROUTINE odfamilycnames(base,nfam,cnames)
      TYPE(odbase),INTENT(in)  :: base
      INTEGER     ,INTENT(out) :: nfam
      CHARACTER(*),INTENT(out) :: cnames(*)
      nfam=0
      cnames(1:nfam)=' '
      write(*,*) 'odfamilycnames'
   END SUBROUTINE

   SUBROUTINE odfamilycname(base,pos,cname)
      TYPE(odbase),INTENT(in)  :: base
      INTEGER     ,INTENT(in)  :: pos
      CHARACTER(*),INTENT(out) :: cname
      cname=' '
      write(*,*) 'odfamilycname'
   END SUBROUTINE

END MODULE

PROGRAM main
  USE test
  TYPE(odbase) :: base
  INTEGER :: i=1
  CHARACTER(8) :: cname
  CALL odfname(base,i,cname)
END PROGRAM


-- 
           Summary: wrong selection of a routine belonging to an interface
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: francois dot jacq at irsn dot fr
 GCC build triplet: [trunk revision 130366]
  GCC host triplet: GNU Fortran (GCC) 4.3.0
GCC target triplet: 20071123 (experimental)


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34231

Reply via email to