From 64db4d29006823b28081c1aad7158d150f0fad18 Mon Sep 17 00:00:00 2001 From: Erik Edelmann Date: Mon, 30 Jan 2006 22:23:57 +0000 Subject: [PATCH] re PR fortran/24266 (ICE when writing to array of strings that is an elements of a user defined type) fortran/ 2005-01-30 Erik Edelmann PR fortran/24266 * trans-io.c (set_internal_unit): Check the rank of the expression node itself instead of its symbol. testsuite/ 2005-01-30 Erik Edelmann PR fortran/24266 * gfortran.dg/arrayio_derived_2.f90: New. From-SVN: r110412 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/trans-io.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/arrayio_derived_2.f90 | 17 +++++++++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/arrayio_derived_2.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 4eb14b89d16..bcdd7992cb0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2005-01-30 Erik Edelmann + + PR fortran/24266 + * trans-io.c (set_internal_unit): Check the rank of the + expression node itself instead of its symbol. + 2006-01-29 Paul Thomas PR fortran/18578 diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index 24b7bc944ed..db1a4813be1 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -599,7 +599,7 @@ set_internal_unit (stmtblock_t * block, tree var, gfc_expr * e) } /* Character array. */ - else if (e->symtree && (e->symtree->n.sym->as->rank > 0)) + else if (e->rank > 0) { se.ss = gfc_walk_expr (e); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1aea281d1cc..5c8e59bbbfc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-01-30 Erik Edelmann + + PR fortran/24266 + * gfortran.dg/arrayio_derived_2.f90: New. + 2006-01-30 Carlos O'Donell * gcc.dg/unsigned-long-compare.c: New test. diff --git a/gcc/testsuite/gfortran.dg/arrayio_derived_2.f90 b/gcc/testsuite/gfortran.dg/arrayio_derived_2.f90 new file mode 100644 index 00000000000..5ebe602fd00 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/arrayio_derived_2.f90 @@ -0,0 +1,17 @@ +! { dg-do compile } +! PR 24266: IO to/from arrays that are components of derived types. +program main + implicit none + + type ice + character(len=80) :: mess(3) + end type ice + type(ice) :: tp + integer :: i + character(len=80) :: mess + + write(tp%mess,*) "message" + read(tp%mess,*) mess + print *, mess + +end program main