! { dg-do run } ! ! Test the fix for PR81048, where in the second call to 'g2' the ! default initialization was "forgotten". 'g1', 'g1a' and 'g3' check ! that this does not occur for scalars and explicit results. ! ! Contributed by David Smith ! program test type f integer :: f = -1 end type type(f) :: a, b(3) type(f), allocatable :: ans b = g2(a) b = g2(a) ans = g1(a) if (ans%f .ne. -1) STOP 1 ans = g1(a) if (ans%f .ne. -1) STOP 2 ans = g1a(a) if (ans%f .ne. -1) STOP 3 ans = g1a(a) if (ans%f .ne. -1) STOP 4 b = g3(a) b = g3(a) contains function g3(a) result(res) type(f) :: a, res(3) do j = 1, 3 if (res(j)%f == -1) then res(j)%f = a%f - 1 else STOP 5 endif enddo end function g3 function g2(a) type(f) :: a, g2(3) do j = 1, 3 if (g2(j)%f == -1) then g2(j)%f = a%f - 1 else STOP 6 endif enddo end function g2 function g1(a) type(f) :: g1, a if (g1%f .ne. -1 ) STOP 7 end function function g1a(a) result(res) type(f) :: res, a if (res%f .ne. -1 ) STOP 8 end function end program test