1! { dg-do compile }
2! { dg-options "-O2 -ftree-tail-merge -fno-delete-null-pointer-checks -fno-guess-branch-probability" }
3!
4! based on testsuite/gfortran.dg/alloc_comp_optional_1.f90,
5! which was contributed by David Kinniburgh <davidkinniburgh@yahoo.co.uk>
6!
7program test_iso
8  type ivs
9     character(LEN=1), dimension(:), allocatable :: chars
10  end type ivs
11  type(ivs) :: v_str
12  integer :: i
13  call foo(v_str, i)
14  if (v_str%chars(1) .ne. "a") call abort
15  if (i .ne. 0) call abort
16  call foo(flag = i)
17  if (i .ne. 1) call abort
18contains
19  subroutine foo (arg, flag)
20    type(ivs), optional, intent(out) :: arg
21    integer :: flag
22    if (present(arg)) then
23      arg = ivs([(char(i+96), i = 1,10)])
24      flag = 0
25    else
26      flag = 1
27    end if
28  end subroutine
29end
30
31