diff options
author | Janus Weil <janus@gcc.gnu.org> | 2009-10-19 21:21:18 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2009-10-19 21:21:18 +0200 |
commit | 1517fd57b68072b7bc7335cd410da066f82dc26d (patch) | |
tree | d3eecbe4bbb8cd2740df65146325439f783a1cf5 /gcc/fortran/parse.c | |
parent | 55165bf6b48ed26cd17e66ac447dcfeaaf110fca (diff) | |
download | gcc-1517fd57b68072b7bc7335cd410da066f82dc26d.zip gcc-1517fd57b68072b7bc7335cd410da066f82dc26d.tar.gz gcc-1517fd57b68072b7bc7335cd410da066f82dc26d.tar.bz2 |
re PR fortran/41586 ([OOP] Allocatable _scalars_ are never auto-deallocated)
2009-10-19 Janus Weil <janus@gcc.gnu.org>
PR fortran/41586
* parse.c (parse_derived): Correctly set 'alloc_comp' and 'pointer_comp'
for CLASS variables.
* trans-array.c (structure_alloc_comps): Handle deallocation and
nullification of allocatable scalar components.
* trans-decl.c (gfc_get_symbol_decl): Remember allocatable scalars for
automatic deallocation.
(gfc_trans_deferred_vars): Automatically deallocate allocatable scalars.
2009-10-19 Janus Weil <janus@gcc.gnu.org>
PR fortran/41586
* gfortran.dg/auto_dealloc_1.f90: New test case.
From-SVN: r152988
Diffstat (limited to 'gcc/fortran/parse.c')
-rw-r--r-- | gcc/fortran/parse.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index c168c52..95a327b 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -2068,11 +2068,15 @@ endType: { /* Look for allocatable components. */ if (c->attr.allocatable + || (c->ts.type == BT_CLASS + && c->ts.u.derived->components->attr.allocatable) || (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.alloc_comp)) sym->attr.alloc_comp = 1; /* Look for pointer components. */ if (c->attr.pointer + || (c->ts.type == BT_CLASS + && c->ts.u.derived->components->attr.pointer) || (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.pointer_comp)) sym->attr.pointer_comp = 1; |