This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/32634] New: renamed, use associated generic interface rejected
- From: "pault at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 5 Jul 2007 15:21:06 -0000
- Subject: [Bug fortran/32634] New: renamed, use associated generic interface rejected
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
The code below incorrectly gives the error, as reported by Salvatore Filippone:
Call foo_pwrk(pr,p,f,cd,info,work=aux)
1
Error: There is no specific subroutine for the generic 'bar_pwrk' at (1)
Not only does it look correct but other compilers handle it OK. module.c is
not finding the "true name" symbol, even though it has been created with the
"use name" symtree. A quick inspection of the .mod file reveals that the
interface is given the true name, which simply is not findable by read_module.
Paul
module foo_base_mod
type foo_dmt
real(kind(1.d0)), allocatable :: rv(:)
integer, allocatable :: iv1(:), iv2(:)
end type foo_dmt
type foo_zmt
complex(kind(1.d0)), allocatable :: rv(:)
integer, allocatable :: iv1(:), iv2(:)
end type foo_zmt
type foo_cdt
integer, allocatable :: md(:)
integer, allocatable :: hi(:), ei(:)
end type foo_cdt
end module foo_base_mod
module bar_prt
use foo_base_mod, only : foo_dmt, foo_zmt, foo_cdt
type bar_dbprt
type(foo_dmt), allocatable :: av(:)
real(kind(1.d0)), allocatable :: d(:)
type(foo_cdt) :: cd
end type bar_dbprt
type bar_dprt
type(bar_dbprt), allocatable :: bpv(:)
end type bar_dprt
type bar_zbprt
type(foo_zmt), allocatable :: av(:)
complex(kind(1.d0)), allocatable :: d(:)
type(foo_cdt) :: cd
end type bar_zbprt
type bar_zprt
type(bar_zbprt), allocatable :: bpv(:)
end type bar_zprt
end module bar_prt
module bar_pr_mod
use bar_prt
interface bar_pwrk
subroutine bar_dppwrk(pr,x,y,cd,info,trans,work)
use foo_base_mod
use bar_prt
type(foo_cdt),intent(in) :: cd
type(bar_dprt), intent(in) :: pr
real(kind(0.d0)),intent(inout) :: x(:), y(:)
integer, intent(out) :: info
character(len=1), optional :: trans
real(kind(0.d0)),intent(inout), optional, target :: work(:)
end subroutine bar_dppwrk
subroutine bar_zppwrk(pr,x,y,cd,info,trans,work)
use foo_base_mod
use bar_prt
type(foo_cdt),intent(in) :: cd
type(bar_zprt), intent(in) :: pr
complex(kind(0.d0)),intent(inout) :: x(:), y(:)
integer, intent(out) :: info
character(len=1), optional :: trans
complex(kind(0.d0)),intent(inout), optional, target :: work(:)
end subroutine bar_zppwrk
end interface
end module bar_pr_mod
module foo_pr_mod
use bar_prt, &
& foo_dbprt => bar_dbprt,&
& foo_zbprt => bar_zbprt,&
& foo_dprt => bar_dprt,&
& foo_zprt => bar_zprt
use bar_pr_mod, &
& foo_pwrk => bar_pwrk
end module foo_pr_mod
Subroutine foo_sub(a,pr,b,x,eps,cd,info)
use foo_base_mod
use foo_pr_mod
Implicit None
!!$ parameters
Type(foo_dmt), Intent(in) :: a
Type(foo_dprt), Intent(in) :: pr
Type(foo_cdt), Intent(in) :: cd
Real(Kind(1.d0)), Intent(in) :: b(:)
Real(Kind(1.d0)), Intent(inout) :: x(:)
Real(Kind(1.d0)), Intent(in) :: eps
integer, intent(out) :: info
!!$ Local data
Real(Kind(1.d0)), allocatable, target :: aux(:),wwrk(:,:)
Real(Kind(1.d0)), allocatable :: p(:), f(:)
info = 0
Call foo_pwrk(pr,p,f,cd,info,work=aux)
return
End Subroutine foo_sub
--
Summary: renamed, use associated generic interface rejected
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Keywords: rejects-valid
Severity: normal
Priority: P3
Component: fortran
AssignedTo: pault at gcc dot gnu dot org
ReportedBy: pault at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32634