OSDN Git Service

fortran/
authoreedelman <eedelman@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Jan 2006 22:23:57 +0000 (22:23 +0000)
committereedelman <eedelman@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Jan 2006 22:23:57 +0000 (22:23 +0000)
2005-01-30  Erik Edelmann  <eedelman@gcc.gnu.org>

        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  <eedelman@gcc.gnu.org>

        PR fortran/24266
        * gfortran.dg/arrayio_derived_2.f90: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110412 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-io.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/arrayio_derived_2.f90 [new file with mode: 0644]

index 4eb14b8..bcdd799 100644 (file)
@@ -1,3 +1,9 @@
+2005-01-30  Erik Edelmann  <eedelman@gcc.gnu.org>
+
+       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  <pault@gcc.gnu.org>
 
        PR fortran/18578
index 24b7bc9..db1a481 100644 (file)
@@ -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);
 
index 1aea281..5c8e59b 100644 (file)
@@ -1,3 +1,8 @@
+2005-01-30  Erik Edelmann  <eedelman@gcc.gnu.org>
+
+       PR fortran/24266
+       * gfortran.dg/arrayio_derived_2.f90: New.
+
 2006-01-30  Carlos O'Donell  <carlos@codesourcery.com>
 
        * 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 (file)
index 0000000..5ebe602
--- /dev/null
@@ -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