73 lines
1.3 KiB
Fortran
73 lines
1.3 KiB
Fortran
! { dg-do compile }
|
|
! Tests the fix for PR28959 in which interface derived types were
|
|
! not always being associated.
|
|
!
|
|
! Contributed by Salvatore Filippone <sfilippone@uniroma2.it>
|
|
!
|
|
module derived_type_mod
|
|
|
|
type foo_dtype
|
|
integer, pointer :: v1(:)=>null()
|
|
end type foo_dtype
|
|
|
|
|
|
end module derived_type_mod
|
|
|
|
|
|
Module tools
|
|
|
|
interface foo_d_sub
|
|
subroutine cdalv(m, v, i, desc_a, info, flag)
|
|
use derived_type_mod
|
|
Integer, intent(in) :: m,i, v(:)
|
|
integer, intent(in), optional :: flag
|
|
integer, intent(out) :: info
|
|
Type(foo_dtype), intent(out) :: desc_a
|
|
end subroutine cdalv
|
|
end interface
|
|
|
|
end module tools
|
|
|
|
|
|
|
|
subroutine foo_bar(a,p,info)
|
|
use derived_type_mod
|
|
implicit none
|
|
|
|
type(foo_dtype), intent(in) :: a
|
|
type(foo_dtype), intent(inout) :: p
|
|
integer, intent(out) :: info
|
|
|
|
info=0
|
|
|
|
call inner_sub(info)
|
|
|
|
|
|
return
|
|
|
|
|
|
contains
|
|
|
|
subroutine inner_sub(info)
|
|
use tools
|
|
implicit none
|
|
|
|
integer, intent(out) :: info
|
|
|
|
integer :: i, nt,iv(10)
|
|
|
|
i = 0
|
|
nt = 1
|
|
|
|
call foo_d_sub(nt,iv,i,p,info,flag=1)
|
|
|
|
return
|
|
|
|
|
|
end subroutine inner_sub
|
|
|
|
|
|
|
|
end subroutine foo_bar
|
|
! { dg-final { cleanup-modules "derived_type_mod tools" } }
|