http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56968



--- Comment #7 from janus at gcc dot gnu.org 2013-04-16 08:50:35 UTC ---

(In reply to comment #6)

> > I think you should directly use

> > 

> > if (rvalue->value.function.esym)

> >   s2 = rvalue->value.function.esym->result;

> 

> yes, I also thought about this variant. Might indeed be the better choice.



Ok, I have verified that this also regtests cleanly and fixes the test case (as

expected). Will commit the following patch later today (unless further

suggestions come up):



Index: gcc/fortran/expr.c

===================================================================

--- gcc/fortran/expr.c    (revision 197988)

+++ gcc/fortran/expr.c    (working copy)

@@ -3540,7 +3540,11 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_ex

     }

       else if (rvalue->expr_type == EXPR_FUNCTION)

     {

-      s2 = rvalue->symtree->n.sym->result;

+      if (rvalue->value.function.esym)

+        s2 = rvalue->value.function.esym->result;

+      else

+        s2 = rvalue->symtree->n.sym->result;

+

       name = s2->name;

     }

       else

Reply via email to