------- Comment #5 from janus at gcc dot gnu dot org 2010-06-06 21:31 ------- I'm afraid you're right. r149586 indeed seems to be the culprit. The bug goes away when reverting a part of that commit, more precisely this one:
Index: gcc/fortran/resolve.c =================================================================== --- gcc/fortran/resolve.c (revision 160347) +++ gcc/fortran/resolve.c (working copy) @@ -11661,20 +11655,6 @@ resolve_symbol (gfc_symbol *sym) && !sym->attr.contained && !sym->attr.intrinsic) gfc_resolve (sym->formal_ns); - /* Make sure the formal namespace is present. */ - if (sym->formal && !sym->formal_ns) - { - gfc_formal_arglist *formal = sym->formal; - while (formal && !formal->sym) - formal = formal->next; - - if (formal) - { - sym->formal_ns = formal->sym->ns; - sym->formal_ns->refs++; - } - } - /* Check threadprivate restrictions. */ if (sym->attr.threadprivate && !sym->attr.save && !sym->ns->save_all && (!sym->attr.in_common -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44430