re PR fortran/18568 (pointers in derived data types do not transmit shape of pointed...
authorErik Edelmann <erik.edelmann@iki.fi>
Thu, 6 Oct 2005 15:44:01 +0000 (18:44 +0300)
committerTobias Schlüter <tobi@gcc.gnu.org>
Thu, 6 Oct 2005 15:44:01 +0000 (17:44 +0200)
2005-10-07  Erik Edelmann  <erik.edelmann@iki.fi>
fortran/
        PR 18568
* resolve.c (find_array_spec): Search through the list of
components in the symbol of the type instead of the symbol of the
variable.
testsuite/
PR 18568
* gfortran.dg/der_pointer_3.f90: New test.

From-SVN: r105039

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/der_pointer_3.f90 [new file with mode: 0644]

index 5663b315bc90b29de791183d0eeaf9d2ce985659..f12abc2971bc2c1e705aa78153ff04c48c0d47fc 100644 (file)
@@ -1,3 +1,10 @@
+2005-10-07  Erik Edelmann  <erik.edelmann@iki.fi>
+
+        PR 18568
+       * resolve.c (find_array_spec): Search through the list of
+       components in the symbol of the type instead of the symbol of the
+       variable.
+
 2005-10-05  Richard Guenther  <rguenther@suse.de>
 
        PR fortran/24176
index 192a18c372c3dea6bf50c7ae327b35055b4faf6f..f0573404f063a73a64459dfa1fdc1c60fef64201 100644 (file)
@@ -1912,7 +1912,6 @@ find_array_spec (gfc_expr * e)
   gfc_ref *ref;
 
   as = e->symtree->n.sym->as;
-  c = e->symtree->n.sym->components;
 
   for (ref = e->ref; ref; ref = ref->next)
     switch (ref->type)
@@ -1926,7 +1925,7 @@ find_array_spec (gfc_expr * e)
        break;
 
       case REF_COMPONENT:
-       for (; c; c = c->next)
+       for (c = e->symtree->n.sym->ts.derived->components; c; c = c->next)
          if (c == ref->u.c.component)
            break;
 
@@ -1940,7 +1939,6 @@ find_array_spec (gfc_expr * e)
            as = c->as;
          }
 
-       c = c->ts.derived->components;
        break;
 
       case REF_SUBSTRING:
index be22aa9a9deee2545e32d5c46c541e0af36fa2db..71b4ecb5260f326be3c3af4a2d0ab52c2b4d8891 100644 (file)
@@ -1,3 +1,8 @@
+2005-10-07  Erik Edelmann  <erik.edelmann@iki.fi>
+
+       PR 18568
+       * gfortran.dg/der_pointer_3.f90: New test.
+
 2005-10-05  Devang Patel  <dpatel@apple.com>
 
        PR Debug/23205
diff --git a/gcc/testsuite/gfortran.dg/der_pointer_3.f90 b/gcc/testsuite/gfortran.dg/der_pointer_3.f90
new file mode 100644 (file)
index 0000000..ed56ffc
--- /dev/null
@@ -0,0 +1,18 @@
+! { dg-do compile }
+! PR 18568
+! Find pointer-to-array components
+module ints
+   type :: bar
+      integer, pointer :: th(:)
+   end type bar
+contains
+   function foo(b)
+      type(bar), intent(in) :: b
+      integer :: foo(size(b%th))
+      foo = 0
+   end function foo
+end module ints
+
+program size_test
+  use ints
+end program size_test