[Bug fortran/39290] Subroutine/function ambiguity in generics

mikael at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Apr 29 10:59:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39290

--- Comment #8 from Mikael Morin <mikael at gcc dot gnu.org> 2013-04-29 10:59:51 UTC ---
The following excerpt from gfc_compare_interfaces(interface.c) seems to be the
cause of 'qc' being called:

      if (s1->attr.function && s2->attr.function)
    {
      /* If both are functions, check result characteristics.  */
      if (!check_result_characteristics (s1, s2, errmsg, err_len))
        return 0;
    }

s2 is 'ff', and s2->attr.function is false, so we don't check function results,
and the 'qc' interface matches.

There are a quite a few problems it seems:
 1. we rely on s1->attr.function _and_ s2->attr.function being set, which is
obviously not the case with implicit typing.
 2. check_result_characteristics will call gfc_compare_types, so it needs
properly set types (no BT_UNKNOWN).
 3. gfc_search_interface returns the first match, so it doesn't detect multiple
matches (which would reject this case and avoid generating wrong code here).
 4. Implicit typing depends on how the symbol is used, so basically on the
available interfaces, but that itself needs implicit typing being resolved (see
1. and 2.)

Good luck to whoever wants to fix this.



More information about the Gcc-bugs mailing list