diff options
author | Janus Weil <janus@gcc.gnu.org> | 2011-01-18 23:40:33 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2011-01-18 23:40:33 +0100 |
commit | 2d300fac7d9aaaa9f5cb63a44b3cfc130895324d (patch) | |
tree | ebece8ac1cfec95a7fefd3af146ad3257b95f006 /gcc/fortran/resolve.c | |
parent | d2cd871faaa370e18d71e26bc92e25034bcbc05c (diff) | |
download | gcc-2d300fac7d9aaaa9f5cb63a44b3cfc130895324d.zip gcc-2d300fac7d9aaaa9f5cb63a44b3cfc130895324d.tar.gz gcc-2d300fac7d9aaaa9f5cb63a44b3cfc130895324d.tar.bz2 |
re PR fortran/47240 ([F03] segfault with procedure pointer component)
2011-01-18 Janus Weil <janus@gcc.gnu.org>
PR fortran/47240
* resolve.c (expression_rank): Fix rank of procedure poiner components.
* trans-expr.c (gfc_conv_procedure_call): Take care of procedure
pointer components as actual arguments.
2011-01-18 Janus Weil <janus@gcc.gnu.org>
PR fortran/47240
* gfortran.dg/proc_ptr_comp_29.f90: New.
From-SVN: r168973
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index ed39e78..f2e7223 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -4863,6 +4863,10 @@ expression_rank (gfc_expr *e) for (ref = e->ref; ref; ref = ref->next) { + if (ref->type == REF_COMPONENT && ref->u.c.component->attr.proc_pointer + && ref->u.c.component->attr.function && !ref->next) + rank = ref->u.c.component->as ? ref->u.c.component->as->rank : 0; + if (ref->type != REF_ARRAY) continue; |