diff options
author | Jakub Jelinek <jakub@redhat.com> | 2005-07-08 12:06:57 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2005-07-08 12:06:57 +0200 |
commit | 0921bc44f78c9c3326d608039d099ea672541e39 (patch) | |
tree | af8d6fe8b5761d621a6b65c255725b238dfaa92c /gcc/fortran/primary.c | |
parent | 29f9d52d10a453b3f2c2b6057827ae18b8ae0e0f (diff) | |
download | gcc-0921bc44f78c9c3326d608039d099ea672541e39.zip gcc-0921bc44f78c9c3326d608039d099ea672541e39.tar.gz gcc-0921bc44f78c9c3326d608039d099ea672541e39.tar.bz2 |
primary.c (gfc_match_rvalue): Handle ENTRY the same way as FUNCTION.
* primary.c (gfc_match_rvalue): Handle ENTRY the same way
as FUNCTION.
* gfortran.fortran-torture/execute/entry_10.f90: New test.
From-SVN: r101758
Diffstat (limited to 'gcc/fortran/primary.c')
-rw-r--r-- | gcc/fortran/primary.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c index f6807d5..36e5eb9 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -1846,11 +1846,24 @@ gfc_match_rvalue (gfc_expr ** result) gfc_set_sym_referenced (sym); - if (sym->attr.function && sym->result == sym - && (gfc_current_ns->proc_name == sym + if (sym->attr.function && sym->result == sym) + { + if (gfc_current_ns->proc_name == sym || (gfc_current_ns->parent != NULL - && gfc_current_ns->parent->proc_name == sym))) - goto variable; + && gfc_current_ns->parent->proc_name == sym)) + goto variable; + + if (sym->attr.entry + && (sym->ns == gfc_current_ns + || sym->ns == gfc_current_ns->parent)) + { + gfc_entry_list *el = NULL; + + for (el = sym->ns->entries; el; el = el->next) + if (sym == el->sym) + goto variable; + } + } if (sym->attr.function || sym->attr.external || sym->attr.intrinsic) goto function0; |