From: Erik Edelmann Date: Wed, 21 Sep 2005 17:05:16 +0000 (+0300) Subject: re PR fortran/19929 (Deallocation of an allocated derived type component causes failure) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4c46bf2ebaf5d66bd4dd36382d1680e61b50e727;p=gcc.git re PR fortran/19929 (Deallocation of an allocated derived type component causes failure) 2005-09-21 Erik Edelmann 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 PR fortran/19929 * gfortran.dg/der_ptr_component_1.f90: New test. From-SVN: r104495 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 13af14bca74..0095d4d430e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2005-09-21 Erik Edelmann + + 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 PR fortran/23420 diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index 040214ed27f..615d91d551c 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -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 { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b27230cf6d0..5d50a5b8c95 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-09-21 Erik Edelmann + + PR fortran/19929 + * gfortran.dg/der_ptr_component_1.f90: New test. 2005-09-21 Volker Reichelt 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 index 00000000000..0f76cc15875 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/der_ptr_component_1.f90 @@ -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