! { dg-do run } | |
! PR 25806: Functions returning pointers to arrays | |
program a | |
integer, target :: storage(5) | |
integer :: s(3) | |
print *, x(3) ! { dg-output " *1 *2 *3" } | |
if (ssum(x(3)) /= 6) STOP 1 | |
s = 0 | |
s = x(3) | |
if (any(s /= (/1, 2, 3/))) STOP 2 | |
contains | |
function x(n) result(t) | |
integer, intent(in) :: n | |
integer, pointer :: t(:) | |
integer :: i | |
t => storage(1:n) | |
t = (/ (i, i = 1, n) /) | |
end function x | |
integer function ssum(a) | |
integer, intent(in) :: a(:) | |
ssum = sum(a) | |
end function ssum | |
end program a | |