| ! { 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 | |