This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/49562] [4.6/4.7 Regression] [OOP] assigning value to type-bound function
- From: "janus at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 28 Jun 2011 12:59:36 +0000
- Subject: [Bug fortran/49562] [4.6/4.7 Regression] [OOP] assigning value to type-bound function
- Auto-submitted: auto-generated
- References: <bug-49562-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49562
--- Comment #6 from janus at gcc dot gnu.org 2011-06-28 12:59:20 UTC ---
(In reply to comment #5)
> Unfortunately this test case is rejected with the patch in comment #2.
However, it is accepted with this improved patch:
Index: gcc/fortran/expr.c
===================================================================
--- gcc/fortran/expr.c (revision 175580)
+++ gcc/fortran/expr.c (working copy)
@@ -4394,8 +4394,8 @@ gfc_check_vardef_context (gfc_expr* e, bool pointe
sym = e->value.function.esym ? e->value.function.esym :
e->symtree->n.sym;
}
- if (!pointer && e->expr_type == EXPR_FUNCTION
- && sym->result->attr.pointer)
+ attr = gfc_expr_attr (e);
+ if (!pointer && e->expr_type == EXPR_FUNCTION && attr.pointer)
{
if (!(gfc_option.allow_std & GFC_STD_F2008))
{
@@ -4432,7 +4432,6 @@ gfc_check_vardef_context (gfc_expr* e, bool pointe
/* Find out whether the expr is a pointer; this also means following
component references to the last one. */
- attr = gfc_expr_attr (e);
is_pointer = (attr.pointer || attr.proc_pointer);
if (pointer && !is_pointer)
{