! { dg-do compile } ! Check fix for pr71936. ! Contributed by Gerhard Steinmetz program p type t end type call test2() call test4() call test1() call test3() contains function f_p() class(t), pointer :: f_p(:) nullify(f_p) end function f_a() class(t), allocatable :: f_a(:) end subroutine test1() class(t), allocatable :: x(:) allocate (x, mold=f_a()) deallocate (x) allocate (x, source=f_a()) end subroutine subroutine test2() class(t), pointer :: x(:) allocate (x, mold=f_p()) deallocate (x) allocate (x, source=f_p()) end subroutine test3() class(t), pointer :: x(:) allocate (x, mold=f_a()) deallocate (x) allocate (x, source=f_a()) end subroutine test4() class(t), allocatable :: x(:) allocate (x, mold=f_p()) deallocate (x) allocate (x, source=f_p()) end subroutine end