From d797a4ed797b6ba140e7fc9059835b74335cbcf5 Mon Sep 17 00:00:00 2001 From: Paul Thomas Date: Mon, 22 Dec 2008 23:16:44 +0000 Subject: [PATCH] re PR fortran/35780 (internal compiler error for complicated PARAMETER expressions) 2008-12-22 Paul Thomas PR fortran/35780 * gfortran.dg/alloc_comp_optional_1.f90: New test. From-SVN: r142890 --- gcc/testsuite/ChangeLog | 5 +++ .../gfortran.dg/alloc_comp_optional_1.f90 | 31 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/alloc_comp_optional_1.f90 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7fed67d29702..f17ce2bc12fb 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 000000000000..be1fa42fb176 --- /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 + -- 2.47.3