https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98897
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |burnus at gcc dot gnu.org --- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> --- match.c's gfc_match_call has: /* If this is a variable of derived-type, it probably starts a type-bound procedure call. */ if ((sym->attr.flavor != FL_PROCEDURE || gfc_is_function_return_value (sym, gfc_current_ns)) && (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS)) return match_typebound_call (st); But here we have: sym->ts.type == BT_UNKNOWN, sym->attr.flavor == FL_VARIABLE However, we do have: sym->assoc != NULL && sym->assoc->target != NULL and 'target' has: expr_type = EXPR_FUNCTION ts = {type = BT_UNKNOWN sym->assoc->target->symtree->n.sym $29 = {name = "output_data_t", module = "output_data_m", but the rest is also the default value. Thus, the target needs to be resolved at some point – even when parsing '%' at some point, the DT needs to be known.