diff options
author | janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-02-21 12:26:44 +0000 |
---|---|---|
committer | janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-02-21 12:26:44 +0000 |
commit | f8f29ba2b8318950b2d552f34097aa0c18d35b54 (patch) | |
tree | a7a581a12553b9f4167aebe97da1b31ec937378d /gcc/fortran/trans-array.c | |
parent | 5a59af672d2dc6fb5e5076afe633f4af10211201 (diff) | |
download | gcc-f8f29ba2b8318950b2d552f34097aa0c18d35b54.tar.gz |
2013-02-21 Janus Weil <janus@gcc.gnu.org>
PR fortran/56385
* trans-array.c (structure_alloc_comps): Handle procedure-pointer
components with allocatable result.
2013-02-21 Janus Weil <janus@gcc.gnu.org>
PR fortran/56385
* gfortran.dg/proc_ptr_comp_37.f90: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@196202 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r-- | gcc/fortran/trans-array.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index ee2954e5bca..75fed2f651c 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -7547,8 +7547,8 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl, called_dealloc_with_status = false; gfc_init_block (&tmpblock); - if (c->attr.allocatable - && (c->attr.dimension || c->attr.codimension)) + if (c->attr.allocatable && (c->attr.dimension || c->attr.codimension) + && !c->attr.proc_pointer) { comp = fold_build3_loc (input_location, COMPONENT_REF, ctype, decl, cdecl, NULL_TREE); @@ -7730,7 +7730,8 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl, continue; } - if (c->attr.allocatable && !cmp_has_alloc_comps) + if (c->attr.allocatable && !c->attr.proc_pointer + && !cmp_has_alloc_comps) { rank = c->as ? c->as->rank : 0; tmp = gfc_duplicate_allocatable (dcmp, comp, ctype, rank); |