ping.

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