aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Edelmann <erik.edelmann@iki.fi>2005-09-21 20:05:16 +0300
committerPaul Thomas <pault@gcc.gnu.org>2005-09-21 17:05:16 +0000
commit4c46bf2ebaf5d66bd4dd36382d1680e61b50e727 (patch)
tree85e83f75fd776d84771496e76fe2a6196d114d81
parent647c66cd63bba9fe8c9d25da11ecf889e9d706c1 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/fortran/trans-stmt.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gfortran.dg/der_ptr_component_1.f9013
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