! { dg-do run }
! PR fortan/31692
! Passing array valued results to procedures
!
! Test case contributed by rakuen_himawari@yahoo.co.jp
module one
  integer :: flag = 0
contains
  function foo1 (n)
    integer :: n
    integer :: foo1(n)
    if (flag == 0) then
      call bar1 (n, foo1)
    else
      call bar2 (n, foo1)
    end if
  end function

  function foo2 (n)
    implicit none
    integer :: n
    integer,ALLOCATABLE :: foo2(:)
    allocate (foo2(n))
    if (flag == 0) then
      call bar1 (n, foo2)
    else
      call bar2 (n, foo2)
    end if
  end function

  function foo3 (n)
    implicit none
    integer :: n
    integer,ALLOCATABLE :: foo3(:)
    allocate (foo3(n))
    foo3 = 0
    call bar2(n, foo3(2:(n-1)))  ! Check that sections are OK
  end function

  subroutine bar1 (n, array)     ! Checks assumed size formal arg.
    integer :: n
    integer :: array(*)
    integer :: i
    do i = 1, n
      array(i) = i
    enddo
  end subroutine

  subroutine bar2(n, array)     ! Checks assumed shape formal arg.
    integer :: n
    integer :: array(:)
    integer :: i
    do i = 1, size (array, 1)
      array(i) = i
    enddo
   end subroutine
end module

program main
  use one
  integer :: n
  n = 3
  if(any (foo1(n) /= [ 1,2,3 ])) STOP 1
  if(any (foo2(n) /= [ 1,2,3 ])) STOP 2
  flag = 1
  if(any (foo1(n) /= [ 1,2,3 ])) STOP 3
  if(any (foo2(n) /= [ 1,2,3 ])) STOP 4
  n = 5
  if(any (foo3(n) /= [ 0,1,2,3,0 ])) STOP 5
end program
