1! { dg-do run }
2! PR 28416: Check that allocatable dummies can be passed onwards as non-assumed
3! shape arg.
4program main
5
6    implicit none
7    integer, allocatable :: a(:)
8
9    interface
10        subroutine foo(v_out)
11            integer, allocatable :: v_out(:)
12        end subroutine foo
13    end interface
14
15    call foo(a)
16    if (any(a /= [ 1, 2, 3 ])) call abort()
17
18end program
19
20
21subroutine foo(v_out)
22    implicit none
23    integer, allocatable :: v_out(:)
24
25    allocate(v_out(3))
26    call bar(v_out, size(v_out))
27end subroutine foo
28
29
30subroutine bar(v, N)
31    implicit none
32    integer :: N
33    integer :: v(N)
34    integer :: i
35
36    do i = 1, N
37        v(i) = i
38    end do
39end subroutine bar
40