From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1666) id 5F8513858418; Mon, 25 Apr 2022 07:26:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5F8513858418 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Richard Biener To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-8240] target/89125 - BSD and math functions X-Act-Checkin: gcc X-Git-Author: Steve Kargl X-Git-Refname: refs/heads/master X-Git-Oldrev: 4f77738c3b44cb6b7bfe2a7ef823a5d9d75c0e79 X-Git-Newrev: b6e22db8564827c82108e0b7fa1a84675379c12b Message-Id: <20220425072610.5F8513858418@sourceware.org> Date: Mon, 25 Apr 2022 07:26:10 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Apr 2022 07:26:10 -0000 https://gcc.gnu.org/g:b6e22db8564827c82108e0b7fa1a84675379c12b commit r12-8240-gb6e22db8564827c82108e0b7fa1a84675379c12b Author: Steve Kargl Date: Mon Apr 25 09:23:56 2022 +0200 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 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. Diff: --- gcc/config/freebsd.h | 2 +- gcc/targhooks.cc | 14 ++++++++++++++ gcc/targhooks.h | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) 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..399d6f874dc 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);