On Sat, Apr 23, 2022 at 8:40 PM Steve Kargl via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> ping.

I have tested the patch on x86_64-linux and pushed it.

Richard.

> On Fri, Apr 15, 2022 at 09:23:43AM -0700, Steve Kargl wrote:
> > Can someone, anyone, please commit the attach patch, which is
> > also attached to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89125
> > where one can read the audit trail.  The original patch was
> > submitted 2 years ago, and required manual intervention due to
> > the recent *.c to *.cc rename.
> >
> > Back story: When GCC is configured and built on non-glibc platforms,
> > it seems very little to no effort is made to enumerate the available
> > C99 libm functions.  It is all or nothing for C99 libm.  The patch
> > introduces a new function, used on only FreeBSD, to inform gcc that
> > it has C99 libm functions (minus a few which clearly GCC does not check
> > nor test).
> >
> > The patch introduces no regression on x86_64-*-freebsd while
> > allowing an additional 31 new passes.
> >
> >                 === gcc Summary ===
> >                                 w/o patch  w patch
> > # of expected passes            175405     175434
> > # of unexpected failures        1081       1051
> > # of unexpected successes       20         20
> > # of expected failures          1459       1459
> > # of unresolved testcases       10         10
> > # of unsupported tests          3252       3252
> >
> >                 === g++ Summary ===
> >                                 w/o patch  w patch
> > # of expected passes            225338     225341
> > # of unexpected failures        678        676
> > # of expected failures          2071       2071
> > # of unresolved testcases       11         11
> > # of unsupported tests          10353      10353
> >
> >                 === gfortran Summary ===
> >                                 w/o patch  w patch
> > # of expected passes            65901      65901
> > # of unexpected failures        12         12
> > # of expected failures          272        272
> > # of unsupported tests          100        100
> >
> >
> > 2022-04-15  Steven G. Kargl  <ka...@gcc.gnu.org>
> >
> >       PR target/89125
> >       * config/freebsd.h: Define TARGET_LIBC_HAS_FUNCTION to be
> >       bsd_libc_has_function.
> >       * gcc/targhooks.cc(bsd_libc_has_function): New function.
> >       Expand the supported math functions to inclue C99 libm.
> >       * gcc/targhooks.h: Prototype for bsd_libc_has_function.
> >
> > --
> > Steve
>
> > diff --git a/gcc/config/freebsd.h b/gcc/config/freebsd.h
> > index 28ebcad88d4..d89ee7dfc97 100644
> > --- a/gcc/config/freebsd.h
> > +++ b/gcc/config/freebsd.h
> > @@ -55,7 +55,7 @@ along with GCC; see the file COPYING3.  If not see
> >  #endif
> >
> >  #undef TARGET_LIBC_HAS_FUNCTION
> > -#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
> > +#define TARGET_LIBC_HAS_FUNCTION bsd_libc_has_function
> >
> >  /* Use --as-needed -lgcc_s for eh support.  */
> >  #ifdef HAVE_LD_AS_NEEDED
> > diff --git a/gcc/targhooks.cc b/gcc/targhooks.cc
> > index e22bc66a6c8..ff127763cf2 100644
> > --- a/gcc/targhooks.cc
> > +++ b/gcc/targhooks.cc
> > @@ -1843,6 +1843,20 @@ no_c99_libc_has_function (enum function_class 
> > fn_class ATTRIBUTE_UNUSED,
> >    return false;
> >  }
> >
> > +/* Assume some c99 functions are present at the runtime including sincos.  
> > */
> > +bool
> > +bsd_libc_has_function (enum function_class fn_class,
> > +                    tree type ATTRIBUTE_UNUSED)
> > +{
> > +  if (fn_class == function_c94
> > +      || fn_class == function_c99_misc
> > +      || fn_class == function_sincos)
> > +    return true;
> > +
> > +  return false;
> > +}
> > +
> > +
> >  tree
> >  default_builtin_tm_load_store (tree ARG_UNUSED (type))
> >  {
> > diff --git a/gcc/targhooks.h b/gcc/targhooks.h
> > index ecfa11287ef..ecce55ebe79 100644
> > --- a/gcc/targhooks.h
> > +++ b/gcc/targhooks.h
> > @@ -212,6 +212,7 @@ extern bool default_libc_has_function (enum 
> > function_class, tree);
> >  extern bool default_libc_has_fast_function (int fcode);
> >  extern bool no_c99_libc_has_function (enum function_class, tree);
> >  extern bool gnu_libc_has_function (enum function_class, tree);
> > +extern bool bsd_libc_has_function (enum function_class, tree);
> >
> >  extern tree default_builtin_tm_load_store (tree);
> >
>
>
> --
> Steve

Reply via email to