diff options
author | Janus Weil <janus@gcc.gnu.org> | 2009-11-26 20:01:02 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2009-11-26 20:01:02 +0100 |
commit | 2d71b918d494015f467023d3ee4596b3c887d4b8 (patch) | |
tree | 514b39dc8ae626e9d48ee49c59406a249bd6050c /gcc/fortran/resolve.c | |
parent | 90dcfecb47a75e10277dcdd44aeb39267d251f36 (diff) | |
download | gcc-2d71b918d494015f467023d3ee4596b3c887d4b8.zip gcc-2d71b918d494015f467023d3ee4596b3c887d4b8.tar.gz gcc-2d71b918d494015f467023d3ee4596b3c887d4b8.tar.bz2 |
re PR fortran/42048 ([F03] Erroneous syntax error message on TBP call)
2009-11-26 Janus Weil <janus@gcc.gnu.org>
PR fortran/42048
PR fortran/42167
* gfortran.h (gfc_is_function_return_value): New prototype.
* match.c (gfc_match_call): Use new function
'gfc_is_function_return_value'.
* primary.c (gfc_is_function_return_value): New function to check if a
symbol is the return value of an encompassing function.
(match_actual_arg,gfc_match_rvalue,match_variable): Use new function
'gfc_is_function_return_value'.
* resolve.c (resolve_common_blocks,resolve_actual_arglist): Ditto.
2009-11-26 Janus Weil <janus@gcc.gnu.org>
PR fortran/42048
PR fortran/42167
* gfortran.dg/select_type_10.f03: New test case.
* gfortran.dg/typebound_call_11.f03: Extended test case.
From-SVN: r154679
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 740679e..5048f25 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -776,7 +776,7 @@ resolve_common_blocks (gfc_symtree *common_root) gfc_error ("COMMON block '%s' at %L is also an intrinsic procedure", sym->name, &common_root->n.common->where); else if (sym->attr.result - ||(sym->attr.function && gfc_current_ns->proc_name == sym)) + || gfc_is_function_return_value (sym, gfc_current_ns)) gfc_notify_std (GFC_STD_F2003, "Fortran 2003: COMMON block '%s' at %L " "that is also a function result", sym->name, &common_root->n.common->where); @@ -1400,10 +1400,7 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype, /* If the symbol is the function that names the current (or parent) scope, then we really have a variable reference. */ - if (sym->attr.function && sym->result == sym - && (sym->ns->proc_name == sym - || (sym->ns->parent != NULL - && sym->ns->parent->proc_name == sym))) + if (gfc_is_function_return_value (sym, sym->ns)) goto got_variable; /* If all else fails, see if we have a specific intrinsic. */ |