OSDN Git Service

2005-09-21 Erik Edelmann <erik.edelmann@iki.fi>
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Sep 2005 17:05:16 +0000 (17:05 +0000)
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Sep 2005 17:05:16 +0000 (17:05 +0000)
PR fortran/19929
* trans-stmt.c (gfc_trans_deallocate): Check if the
object to be deallocated is an array by looking at
expr->rank instead of expr->symtree->n.sym->attr.dimension.

2005-09-21  Erik Edelmann  <erik.edelmann@iki.fi>

PR fortran/19929
* gfortran.dg/der_ptr_component_1.f90: New test.

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

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

index 13af14b..0095d4d 100644 (file)
@@ -1,3 +1,10 @@
+2005-09-21  Erik Edelmann  <erik.edelmann@iki.fi>
+
+       PR fortran/19929
+       * trans-stmt.c (gfc_trans_deallocate): Check if the 
+       object to be deallocated is an array by looking at 
+       expr->rank instead of expr->symtree->n.sym->attr.dimension.
+
 2005-09-20  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
 
        PR fortran/23420
index 040214e..615d91d 100644 (file)
@@ -3277,7 +3277,7 @@ gfc_trans_deallocate (gfc_code * code)
       se.descriptor_only = 1;
       gfc_conv_expr (&se, expr);
 
-      if (expr->symtree->n.sym->attr.dimension)
+      if (expr->rank)
        tmp = gfc_array_deallocate (se.expr, pstat);
       else
        {
index b27230c..5d50a5b 100644 (file)
@@ -1,3 +1,7 @@
+2005-09-21  Erik Edelmann  <erik.edelmann@iki.fi>
+
+       PR fortran/19929
+       * gfortran.dg/der_ptr_component_1.f90: New test.
 2005-09-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
        PR c++/23965
diff --git a/gcc/testsuite/gfortran.dg/der_ptr_component_1.f90 b/gcc/testsuite/gfortran.dg/der_ptr_component_1.f90
new file mode 100644 (file)
index 0000000..0f76cc1
--- /dev/null
@@ -0,0 +1,13 @@
+! { dg-do compile }
+! PR 19929
+! Deallocation of pointer components of derived type arrays
+program der_ptr_component
+    type :: t
+        integer, pointer :: p
+    end type t
+    type(t) :: a(1)
+
+    allocate(a(1)%p)
+    deallocate(a(1)%p)
+
+end program der_ptr_component