http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47463
--- Comment #11 from janus at gcc dot gnu.org 2011-02-09 18:08:45 UTC --- The strange behavior of the test case in comment #9 can be cured by just removing one peculiar line of code: Index: gcc/fortran/resolve.c =================================================================== --- gcc/fortran/resolve.c (revision 169977) +++ gcc/fortran/resolve.c (working copy) @@ -5894,7 +5894,6 @@ resolve_typebound_subroutine (gfc_code *code) name = name ? name : code->expr1->value.function.esym->name; code->expr1->symtree = expr->symtree; code->expr1->ref = gfc_copy_ref (expr->ref); - expr->symtree->n.sym->ts.u.derived = declared; gfc_add_vptr_component (code->expr1); gfc_add_component_ref (code->expr1, name); code->expr1->value.function.esym = NULL; This line seems completely bogus to me. I have no idea what it's supposed to do. In any case it came from the following commit: http://gcc.gnu.org/viewcvs/trunk/gcc/fortran/resolve.c?r1=162313&r2=162312&pathrev=162313