diff options
author | pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-10-17 17:52:05 +0000 |
---|---|---|
committer | pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-10-17 17:52:05 +0000 |
commit | 5db34fe57b01080f7bd990dfc5aecbdd6724f941 (patch) | |
tree | 200ebb8c89c3290e59010b3d9765e835125267cf /gcc/fortran/resolve.c | |
parent | a68b3ea1194ee1fdc86dd47909bb8e2eb7bf0857 (diff) |
2016-10-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/61420
PR fortran/78013
* resolve.c (resolve_variable): Obtain the typespec for a
variable expression, when the variable is a function result
that is a procedure pointer.
2016-10-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/61420
PR fortran/78013
* gfortran.dg/proc_ptr_49.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241274 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index e03979e1710..87178a41333 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -5112,6 +5112,11 @@ resolve_variable (gfc_expr *e) if (sym->ts.type != BT_UNKNOWN) gfc_variable_attr (e, &e->ts); + else if (sym->attr.flavor == FL_PROCEDURE + && sym->attr.function && sym->result + && sym->result->ts.type != BT_UNKNOWN + && sym->result->attr.proc_pointer) + e->ts = sym->result->ts; else { /* Must be a simple variable reference. */ |