------- Comment #7 from pault at gcc dot gnu dot org  2010-05-01 17:16 -------
I do not see any reason not to confirm this one.

This

Index: gcc/fortran/resolve.c
===================================================================
*** gcc/fortran/resolve.c       (revision 158958)
--- gcc/fortran/resolve.c       (working copy)
*************** resolve_typebound_generic_call (gfc_expr
*** 5132,5137 ****
--- 5132,5138 ----
  {
    gfc_typebound_proc* genproc;
    const char* genname;
+   gfc_symtree *st;

    gcc_assert (e->expr_type == EXPR_COMPCALL);
    genname = e->value.compcall.name;
*************** resolve_typebound_generic_call (gfc_expr
*** 5199,5204 ****
--- 5200,5214 ----
    return FAILURE;

  success:
+   genname = e->value.compcall.tbp->u.specific->name;
+   if (*genname == '@')
+     genname = e->value.compcall.tbp->u.specific->n.sym->name;
+ 
+   st = gfc_find_typebound_proc (e->symtree->n.sym->ts.u.derived, NULL,
+                               genname, false, &e->where);
+   if (st)
+     e->value.compcall.tbp = st->n.tb;
+ 
    return SUCCESS;
  }

is a fix for the first testcase - the only regression is
dynamic_dispatch_5.f03, which needs dealing with in the same way as the fix for
its PR; ie. the derived type needs to be that of the final reference.

I'll have something ready by the end of the weekend.

Paul


-- 

pault at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |pault at gcc dot gnu dot org
                   |dot org                     |
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2010-05-01 17:16:57
               date|                            |


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

Reply via email to