! { dg-do run } ! Check that allocatable/pointer variables of derived types with initialized ! components are are initialized when allocated ! PR 21625 program test implicit none type :: t integer :: a = 3 end type t type :: s type(t), pointer :: p(:) type(t), pointer :: p2 end type s type(t), pointer :: p type(t), allocatable :: q(:,:) type(s) :: z type(s) :: x(2) allocate(p, q(2,2)) if (p%a /= 3) STOP 1 if (any(q(:,:)%a /= 3)) STOP 2 allocate(z%p2, z%p(2:3)) if (z%p2%a /= 3) STOP 3 if (any(z%p(:)%a /= 3)) STOP 4 allocate(x(1)%p2, x(1)%p(2)) if (x(1)%p2%a /= 3) STOP 5 if (any(x(1)%p(:)%a /= 3)) STOP 6 end program test