diff options
author | Erik Edelmann <erik.edelmann@iki.fi> | 2005-09-21 20:05:16 +0300 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2005-09-21 17:05:16 +0000 |
commit | 4c46bf2ebaf5d66bd4dd36382d1680e61b50e727 (patch) | |
tree | 85e83f75fd776d84771496e76fe2a6196d114d81 | |
parent | 647c66cd63bba9fe8c9d25da11ecf889e9d706c1 (diff) | |
download | gcc-4c46bf2ebaf5d66bd4dd36382d1680e61b50e727.zip gcc-4c46bf2ebaf5d66bd4dd36382d1680e61b50e727.tar.gz gcc-4c46bf2ebaf5d66bd4dd36382d1680e61b50e727.tar.bz2 |
re PR fortran/19929 (Deallocation of an allocated derived type component causes failure)
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-21 Erik Edelmann <erik.edelmann@iki.fi>
PR fortran/19929
* gfortran.dg/der_ptr_component_1.f90: New test.
From-SVN: r104495
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/trans-stmt.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/der_ptr_component_1.f90 | 13 |
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 13af14b..0095d4d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -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 diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index 040214e..615d91d 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 b27230c..5d50a5b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..0f76cc1 --- /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 |