target/89125 - BSD and math functions
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). 2022-04-15 Steven G. Kargl <kargl@gcc.gnu.org> PR target/89125 * config/freebsd.h: Define TARGET_LIBC_HAS_FUNCTION to be bsd_libc_has_function. * targhooks.cc (bsd_libc_has_function): New function. Expand the supported math functions to inclue C99 libm. * targhooks.h (bsd_libc_has_function): New Prototype.
This commit is contained in:
parent
4f77738c3b
commit
b6e22db856
3 changed files with 16 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue