diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2016-10-17 17:52:05 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2016-10-17 17:52:05 +0000 |
commit | 871267e19da270df32c9ffe8be194228a14ddd87 (patch) | |
tree | 200ebb8c89c3290e59010b3d9765e835125267cf /gcc/fortran/resolve.c | |
parent | fd9593e9d2addd7b96ab4da00c4a240edc111fc7 (diff) | |
download | gcc-871267e19da270df32c9ffe8be194228a14ddd87.zip gcc-871267e19da270df32c9ffe8be194228a14ddd87.tar.gz gcc-871267e19da270df32c9ffe8be194228a14ddd87.tar.bz2 |
re PR fortran/61420 ([OOP] type-bound procedure returning a procedure pointer fails to compile)
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.
From-SVN: r241274
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 e03979e..87178a4 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. */ |