diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7fed67d2970..f17ce2bc12f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-12-22 Paul Thomas + + PR fortran/35780 + * gfortran.dg/alloc_comp_optional_1.f90: New test. + 2008-12-22 Ben Elliston PR c++/38362 diff --git a/gcc/testsuite/gfortran.dg/alloc_comp_optional_1.f90 b/gcc/testsuite/gfortran.dg/alloc_comp_optional_1.f90 new file mode 100644 index 00000000000..be1fa42fb17 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/alloc_comp_optional_1.f90 @@ -0,0 +1,31 @@ +! { dg-do run } +! Tests the fix for PR38602, a regression caused by a modification +! to the nulling of INTENT_OUT dummies with allocatable components +! that caused a segfault with optional arguments. +! +! Contributed by David Kinniburgh +! +program test_iso + type ivs + character(LEN=1), dimension(:), allocatable :: chars + end type ivs + type(ivs) :: v_str + integer :: i + call foo(v_str, i) + if (v_str%chars(1) .ne. "a") call abort + if (i .ne. 0) call abort + call foo(flag = i) + if (i .ne. 1) call abort +contains + subroutine foo (arg, flag) + type(ivs), optional, intent(out) :: arg + integer :: flag + if (present(arg)) then + arg = ivs([(char(i+96), i = 1,10)]) + flag = 0 + else + flag = 1 + end if + end subroutine +end +