http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49110
kargl at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kargl at gcc dot gnu.org --- Comment #2 from kargl at gcc dot gnu.org 2011-05-22 16:32:51 UTC --- This patch allows your code to compile, but I don't know if it works correctly. Do you have a complete self-contained small testcase? Index: resolve.c =================================================================== --- resolve.c (revision 173757) +++ resolve.c (working copy) @@ -10305,7 +10305,7 @@ resolve_fl_procedure (gfc_symbol *sym, i actual length; (ii) To declare a named constant; or (iii) External function - but length must be declared in calling scoping unit. */ if (sym->attr.function - && sym->ts.type == BT_CHARACTER + && sym->ts.type == BT_CHARACTER && !sym->ts.deferred && sym->ts.u.cl && sym->ts.u.cl->length == NULL) { if ((sym->as && sym->as->rank) || (sym->attr.pointer)