1! { dg-do run } 2! PR 25806: Functions returning pointers to arrays 3program a 4 integer, target :: storage(5) 5 integer :: s(3) 6 7 8 print *, x(3) ! { dg-output " *1 *2 *3" } 9 10 if (ssum(x(3)) /= 6) call abort() 11 12 s = 0 13 s = x(3) 14 if (any(s /= (/1, 2, 3/))) call abort() 15 16contains 17 18 function x(n) result(t) 19 integer, intent(in) :: n 20 integer, pointer :: t(:) 21 integer :: i 22 23 t => storage(1:n) 24 t = (/ (i, i = 1, n) /) 25 26 end function x 27 28 29 integer function ssum(a) 30 integer, intent(in) :: a(:) 31 32 ssum = sum(a) 33 34 end function ssum 35 36end program a 37 38 39