diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2008-12-22 23:16:44 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2008-12-22 23:16:44 +0000 |
commit | d797a4ed797b6ba140e7fc9059835b74335cbcf5 (patch) | |
tree | 787d00c6258119338307b419aecba69048a61200 /gcc | |
parent | 8a2725318babd06ccbb2a45d9d9cb699c75e4f38 (diff) | |
download | gcc-d797a4ed797b6ba140e7fc9059835b74335cbcf5.zip gcc-d797a4ed797b6ba140e7fc9059835b74335cbcf5.tar.gz gcc-d797a4ed797b6ba140e7fc9059835b74335cbcf5.tar.bz2 |
re PR fortran/35780 (internal compiler error for complicated PARAMETER expressions)
2008-12-22 Paul Thomas <pault@gcc.gnu.org>
PR fortran/35780
* gfortran.dg/alloc_comp_optional_1.f90: New test.
From-SVN: r142890
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/alloc_comp_optional_1.f90 | 31 |
2 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7fed67d..f17ce2b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-12-22 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/35780 + * gfortran.dg/alloc_comp_optional_1.f90: New test. + 2008-12-22 Ben Elliston <bje@au.ibm.com> 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 0000000..be1fa42 --- /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 <davidkinniburgh@yahoo.co.uk> +! +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 + |