------- Comment #4 from janus at gcc dot gnu dot org  2009-05-06 22:07 -------

> From the little I understand 'external' should not be set to 1 for functions
> listed as intrinsics but not f95 intrinsics.

I don't see any reason why 'erfc' should get the EXTERNAL attribute here at
all. In any case this happens in gfc_is_intrinsic:

  /* See if this intrinsic is allowed in the current standard.  */
  if (gfc_check_intrinsic_standard (isym, &symstd, false, loc) == FAILURE)
    {
      if (gfc_option.warn_intrinsics_std)
        gfc_warning_now ("The intrinsic '%s' at %L is not included in the"
                         " selected standard but %s and '%s' will be treated
as"
                         " if declared EXTERNAL.  Use an appropriate -std=*"
                         " option or define -fall-intrinsics to allow this"
                         " intrinsic.", sym->name, &loc, symstd, sym->name);
      sym->attr.external = 1;

      return false;
    }

This code was committed as r138122 by Daniel K. as a fix for PR33141, but it
doesn't seem quite right to me. Either one should avoid setting the EXTERNAL
attribute here at all, or at least only do it if the symbol is not specified by
the user as a module procedure.


-- 

janus at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |janus at gcc dot gnu dot org


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

Reply via email to