http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52024
--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-01-28 09:51:55 UTC --- (In reply to comment #2) > While for GENERIC, one calls in resolve.c's check_generic_tbp_ambiguity: > if (gfc_compare_interfaces (sym1, sym2, sym2->name, 1, 0, NULL, 0)) > > The INTERFACE is checked via interface.c's "gfc_check_interfaces > (gfc_namespace > *ns)", which calls "check_interface1" for the actual check. The latter uses: && gfc_compare_interfaces (p->sym, q->sym, q->sym->name, generic_flag, 0, NULL, 0)) while it looks the same, it turns out that "generic_flag" is 0. If one uses "0" also for the GENERIC version, everything works as expected (i.e. no error for this version, an error if one swaps the dummy argument order). The question is only: What does that "generic_flag" actually do?