1! PR 21104.  Make sure that either f() or its caller will allocate
2! the array data.  We've decided to make the caller allocate it.
3! { dg-do run }
4program main
5  implicit none
6  call test (f ())
7contains
8  subroutine test (x)
9    integer, dimension (10) :: x
10    integer :: i
11    do i = 1, 10
12      if (x (i) .ne. i * 100) call abort
13    end do
14  end subroutine test
15
16  function f ()
17    integer, dimension (10) :: f
18    integer :: i
19    forall (i = 1:10) f (i) = i * 100
20  end function f
21end program main
22