blob: e319acfaa07041dcf92d6a9d9b6fe95dd8b92ecd [file] [log] [blame]
! { dg-do run }
! PR fortran/85786
program test
implicit none
type :: p2d
real, pointer :: p(:,:) => null()
end type p2d
type :: test_cs
type(p2d), pointer :: v(:) => null()
end type test_cs
type(test_cs), pointer :: cs
real, allocatable, target :: e(:,:)
allocate(cs)
if (associated(cs) .neqv. .true.) stop 1
allocate(cs%v(2))
if (associated(cs%v) .neqv. .true.) stop 2
allocate(e(2,2))
e = 42
if (query_ptr(e, cs) .neqv. .true.) stop 3
contains
logical function query_ptr(f_ptr, cs)
real, target, intent(in) :: f_ptr(:,:)
type(test_cs), pointer, intent(inout) :: cs
if (associated(cs)) then
if (associated(cs%v) .neqv. .true.) stop 4
cs%v(2)%p => f_ptr
if (associated(cs%v(2)%p) .neqv. .true.) stop 5
query_ptr = associated(cs%v(2)%p, f_ptr)
else
query_ptr = .false.
end if
end function query_ptr
end program test