diff options
author | Joseph Myers <joseph@codesourcery.com> | 2017-09-13 01:13:30 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2017-09-13 01:13:30 +0000 |
commit | 620ff9eea68d8edf0cdfb1e5cbb653993002484e (patch) | |
tree | b47a2ab2ef0dd3a1174b6a432f5a44a8cacefe0e /math | |
parent | a891caff7a911227627eb147e9bfcb7737b2bc2b (diff) | |
download | glibc-620ff9eea68d8edf0cdfb1e5cbb653993002484e.zip glibc-620ff9eea68d8edf0cdfb1e5cbb653993002484e.tar.gz glibc-620ff9eea68d8edf0cdfb1e5cbb653993002484e.tar.bz2 |
Define and use libm_alias_double.
Continuing the process of setting up common macros for libm function
aliases, with a view to using them to define _FloatN / _FloatNx
aliases in future, this patch adds a libm_alias_double macro and uses
it in the type-generic templates.
This macro handles defining aliases for double, and for long double in
the NO_LONG_DOUBLE case. It also handles defining compat symbols for
long double = double for architectures that changed their long double
format. By so doing, it eliminates the need for the
M_LIBM_NEED_COMPAT and declare_mgen_libm_compat macros; the single
declare_mgen_alias call in each template now suffices to define all
required compat symbols. When used for more double functions (not
based on type-generic templates), I expect it will eliminate the need
for most ldbl-opt wrappers for such functions.
A few special cases are needed. __clog10l is a public symbol (for
historical reasons) so needs to be given appropriate compat versions
for architectures that changed their long double format, but is not
defined as an alias using the normal macros since __clog10* are *not*
public symbols for _FloatN / _FloatNx types. For scalbn, scalbln and
log1p, the changes adding errno setting support for those functions
left compat symbols pointing directly to the non-errno-setting
implementations. There is no requirement for the compat symbols not
to set errno; that just made for the simplest patches at that time.
Now, with these common macros, it's natural to redirect the compat
symbols to the errno-setting wrappers, which I intend to do in a
separate patch.
Tested for x86_64, and with build-many-glibcs.py. For ldbl-opt
platforms the stripped libm.so binaries are changed (disassembly
unchanged) because the details of how the clog10l compat symbol is
created mean it ceases to be weak as it was before; for other
platforms, stripped libm.so binaries are unchanged.
2017-09-13 Joseph Myers <joseph@codesourcery.com>
* sysdeps/generic/libm-alias-double.h: New file.
* sysdeps/ieee754/ldbl-opt/libm-alias-double.h: Likewise.
* sysdeps/generic/math-type-macros-double.h: Include
<libm-alias-double.h>.
[declare_mgen_alias] (declare_mgen_alias): Define to use
libm_alias_double.
* sysdeps/generic/math-type-macros.h [!M_LIBM_NEED_COMPAT]
(M_LIBM_NEED_COMPAT): Remove macro.
[!M_LIBM_NEED_COMPAT] (declare_mgen_libm_compat): Likewise.
* sysdeps/ieee754/ldbl-opt/math-type-macros-double.h: Remove.
* math/cabs_template.c [M_LIBM_NEED_COMPAT]: Remove conditional
code.
* math/carg_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/cimag_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/conj_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/creal_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_cacos_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_cacosh_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_casin_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_casinh_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_catan_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_catanh_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_ccos_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_ccosh_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_cexp_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_clog10_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_clog_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_cpow_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_cproj_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_csin_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_csinh_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_csqrt_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_ctan_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_ctanh_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_fdim_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_fmax_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_fmin_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/s_nan_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* math/w_ilogb_template.c [M_LIBM_NEED_COMPAT]: Likewise.
* sysdeps/ieee754/ldbl-opt/s_clog10.c: New file.
* sysdeps/ieee754/ldbl-opt/s_ldexp.c (M_LIBM_NEED_COMPAT): Remove
macro.
(declare_mgen_alias): New macro.
* sysdeps/ieee754/ldbl-opt/w_log1p.c: New file.
* sysdeps/ieee754/ldbl-opt/w_scalbln.c: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c
(M_LIBM_NEED_COMPAT): Remove macro.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c
[HAVE_AS_VIS3_SUPPORT]: Include <math_ldbl_opt.h> and
<first-versions.h>.
[HAVE_AS_VIS3_SUPPORT && LONG_DOUBLE_COMPAT (libm,
FIRST_VERSION_libm_fdiml)]: Define fdiml as compat symbol.
Diffstat (limited to 'math')
-rw-r--r-- | math/cabs_template.c | 4 | ||||
-rw-r--r-- | math/carg_template.c | 4 | ||||
-rw-r--r-- | math/cimag_template.c | 4 | ||||
-rw-r--r-- | math/conj_template.c | 4 | ||||
-rw-r--r-- | math/creal_template.c | 4 | ||||
-rw-r--r-- | math/s_cacos_template.c | 4 | ||||
-rw-r--r-- | math/s_cacosh_template.c | 4 | ||||
-rw-r--r-- | math/s_casin_template.c | 4 | ||||
-rw-r--r-- | math/s_casinh_template.c | 4 | ||||
-rw-r--r-- | math/s_catan_template.c | 4 | ||||
-rw-r--r-- | math/s_catanh_template.c | 4 | ||||
-rw-r--r-- | math/s_ccos_template.c | 4 | ||||
-rw-r--r-- | math/s_ccosh_template.c | 4 | ||||
-rw-r--r-- | math/s_cexp_template.c | 4 | ||||
-rw-r--r-- | math/s_clog10_template.c | 6 | ||||
-rw-r--r-- | math/s_clog_template.c | 4 | ||||
-rw-r--r-- | math/s_cpow_template.c | 4 | ||||
-rw-r--r-- | math/s_cproj_template.c | 4 | ||||
-rw-r--r-- | math/s_csin_template.c | 4 | ||||
-rw-r--r-- | math/s_csinh_template.c | 4 | ||||
-rw-r--r-- | math/s_csqrt_template.c | 4 | ||||
-rw-r--r-- | math/s_ctan_template.c | 4 | ||||
-rw-r--r-- | math/s_ctanh_template.c | 4 | ||||
-rw-r--r-- | math/s_fdim_template.c | 4 | ||||
-rw-r--r-- | math/s_fmax_template.c | 4 | ||||
-rw-r--r-- | math/s_fmin_template.c | 4 | ||||
-rw-r--r-- | math/s_nan_template.c | 4 | ||||
-rw-r--r-- | math/w_ilogb_template.c | 4 |
28 files changed, 0 insertions, 114 deletions
diff --git a/math/cabs_template.c b/math/cabs_template.c index c9592c1..21b8506 100644 --- a/math/cabs_template.c +++ b/math/cabs_template.c @@ -27,7 +27,3 @@ M_DECL_FUNC (__cabs) (CFLOAT z) } declare_mgen_alias (__cabs, cabs) - -#if M_LIBM_NEED_COMPAT (cabs) -declare_mgen_libm_compat (__cabs, cabs) -#endif diff --git a/math/carg_template.c b/math/carg_template.c index 5d60663..9f7ad14 100644 --- a/math/carg_template.c +++ b/math/carg_template.c @@ -27,7 +27,3 @@ M_DECL_FUNC (__carg) (CFLOAT x) } declare_mgen_alias (__carg, carg) - -#if M_LIBM_NEED_COMPAT (carg) -declare_mgen_libm_compat (__carg, carg) -#endif diff --git a/math/cimag_template.c b/math/cimag_template.c index 6284b57..b24f001 100644 --- a/math/cimag_template.c +++ b/math/cimag_template.c @@ -26,7 +26,3 @@ M_DECL_FUNC (__cimag) (CFLOAT z) } declare_mgen_alias (__cimag, cimag) - -#if M_LIBM_NEED_COMPAT (cimag) -declare_mgen_libm_compat (__cimag, cimag) -#endif diff --git a/math/conj_template.c b/math/conj_template.c index b71f338..c21a1f1 100644 --- a/math/conj_template.c +++ b/math/conj_template.c @@ -26,7 +26,3 @@ M_DECL_FUNC (__conj) (CFLOAT z) } declare_mgen_alias (__conj, conj) - -#if M_LIBM_NEED_COMPAT (conj) -declare_mgen_libm_compat (__conj, conj) -#endif diff --git a/math/creal_template.c b/math/creal_template.c index c658966..8ccbe6f 100644 --- a/math/creal_template.c +++ b/math/creal_template.c @@ -26,7 +26,3 @@ M_DECL_FUNC (__creal) (CFLOAT z) } declare_mgen_alias (__creal, creal) - -#if M_LIBM_NEED_COMPAT (creal) -declare_mgen_libm_compat (__creal, creal) -#endif diff --git a/math/s_cacos_template.c b/math/s_cacos_template.c index 7629e55..29cac62 100644 --- a/math/s_cacos_template.c +++ b/math/s_cacos_template.c @@ -53,7 +53,3 @@ M_DECL_FUNC (__cacos) (CFLOAT x) } declare_mgen_alias (__cacos, cacos); - -#if M_LIBM_NEED_COMPAT (carg) -declare_mgen_libm_compat (__cacos, cacos) -#endif diff --git a/math/s_cacosh_template.c b/math/s_cacosh_template.c index 1fe0f4f..14f0b2a 100644 --- a/math/s_cacosh_template.c +++ b/math/s_cacosh_template.c @@ -90,7 +90,3 @@ M_DECL_FUNC (__cacosh) (CFLOAT x) } declare_mgen_alias (__cacosh, cacosh) - -#if M_LIBM_NEED_COMPAT (cacosh) -declare_mgen_libm_compat (__cacosh, cacosh) -#endif diff --git a/math/s_casin_template.c b/math/s_casin_template.c index faa2f6b..c61c880 100644 --- a/math/s_casin_template.c +++ b/math/s_casin_template.c @@ -61,7 +61,3 @@ M_DECL_FUNC (__casin) (CFLOAT x) } declare_mgen_alias (__casin, casin) - -#if M_LIBM_NEED_COMPAT (casin) -declare_mgen_libm_compat (__casin, casin) -#endif diff --git a/math/s_casinh_template.c b/math/s_casinh_template.c index 8d7cc5c..440e639 100644 --- a/math/s_casinh_template.c +++ b/math/s_casinh_template.c @@ -69,7 +69,3 @@ M_DECL_FUNC (__casinh) (CFLOAT x) } declare_mgen_alias (__casinh, casinh) - -#if M_LIBM_NEED_COMPAT (casinh) -declare_mgen_libm_compat (__casinh, casinh) -#endif diff --git a/math/s_catan_template.c b/math/s_catan_template.c index dce613f..2434870 100644 --- a/math/s_catan_template.c +++ b/math/s_catan_template.c @@ -139,7 +139,3 @@ M_DECL_FUNC (__catan) (CFLOAT x) } declare_mgen_alias (__catan, catan) - -#if M_LIBM_NEED_COMPAT (catan) -declare_mgen_libm_compat (__catan, catan) -#endif diff --git a/math/s_catanh_template.c b/math/s_catanh_template.c index 21e06f5..f4f5605 100644 --- a/math/s_catanh_template.c +++ b/math/s_catanh_template.c @@ -133,7 +133,3 @@ M_DECL_FUNC (__catanh) (CFLOAT x) } declare_mgen_alias (__catanh, catanh) - -#if M_LIBM_NEED_COMPAT (catanh) -declare_mgen_libm_compat (__catanh, catanh) -#endif diff --git a/math/s_ccos_template.c b/math/s_ccos_template.c index 01cbae3..6584450 100644 --- a/math/s_ccos_template.c +++ b/math/s_ccos_template.c @@ -34,7 +34,3 @@ M_DECL_FUNC (__ccos) (CFLOAT x) } declare_mgen_alias (__ccos, ccos); - -#if M_LIBM_NEED_COMPAT (carg) -declare_mgen_libm_compat (__ccos, ccos) -#endif diff --git a/math/s_ccosh_template.c b/math/s_ccosh_template.c index 1ee6014..d3ee8fc 100644 --- a/math/s_ccosh_template.c +++ b/math/s_ccosh_template.c @@ -135,7 +135,3 @@ M_DECL_FUNC (__ccosh) (CFLOAT x) } declare_mgen_alias (__ccosh, ccosh); - -#if M_LIBM_NEED_COMPAT (carg) -declare_mgen_libm_compat (__ccosh, ccosh) -#endif diff --git a/math/s_cexp_template.c b/math/s_cexp_template.c index b2c77c1..6290aca 100644 --- a/math/s_cexp_template.c +++ b/math/s_cexp_template.c @@ -148,7 +148,3 @@ M_DECL_FUNC (__cexp) (CFLOAT x) return retval; } declare_mgen_alias (__cexp, cexp) - -#if M_LIBM_NEED_COMPAT (cexp) -declare_mgen_libm_compat (__cexp, cexp) -#endif diff --git a/math/s_clog10_template.c b/math/s_clog10_template.c index 30d87b5..1b004d1 100644 --- a/math/s_clog10_template.c +++ b/math/s_clog10_template.c @@ -120,9 +120,3 @@ M_DECL_FUNC (__clog10) (CFLOAT x) } declare_mgen_alias (__clog10, clog10) - -#if M_LIBM_NEED_COMPAT (clog10) -/* __clog10 is also a public symbol. */ -declare_mgen_libm_compat (__clog10, __clog10) -declare_mgen_libm_compat (clog10, clog10) -#endif diff --git a/math/s_clog_template.c b/math/s_clog_template.c index feb801f..37746a0 100644 --- a/math/s_clog_template.c +++ b/math/s_clog_template.c @@ -113,7 +113,3 @@ M_DECL_FUNC (__clog) (CFLOAT x) } declare_mgen_alias (__clog, clog) - -#if M_LIBM_NEED_COMPAT (clog) -declare_mgen_libm_compat (__clog, clog) -#endif diff --git a/math/s_cpow_template.c b/math/s_cpow_template.c index 604d095..dd1d08d 100644 --- a/math/s_cpow_template.c +++ b/math/s_cpow_template.c @@ -27,7 +27,3 @@ M_DECL_FUNC (__cpow) (CFLOAT x, CFLOAT c) } declare_mgen_alias (__cpow, cpow) - -#if M_LIBM_NEED_COMPAT (cpow) -declare_mgen_libm_compat (__cpow, cpow) -#endif diff --git a/math/s_cproj_template.c b/math/s_cproj_template.c index 7f9e9f0..0ab2727 100644 --- a/math/s_cproj_template.c +++ b/math/s_cproj_template.c @@ -39,7 +39,3 @@ M_DECL_FUNC (__cproj) (CFLOAT x) } declare_mgen_alias (__cproj, cproj) - -#if M_LIBM_NEED_COMPAT (cproj) -declare_mgen_libm_compat (__cproj, cproj) -#endif diff --git a/math/s_csin_template.c b/math/s_csin_template.c index d52beb9..5a38bf7 100644 --- a/math/s_csin_template.c +++ b/math/s_csin_template.c @@ -159,7 +159,3 @@ M_DECL_FUNC (__csin) (CFLOAT x) } declare_mgen_alias (__csin, csin) - -#if M_LIBM_NEED_COMPAT (csin) -declare_mgen_libm_compat (__csin, csin) -#endif diff --git a/math/s_csinh_template.c b/math/s_csinh_template.c index d5ef5ae..ecea37c 100644 --- a/math/s_csinh_template.c +++ b/math/s_csinh_template.c @@ -154,7 +154,3 @@ M_DECL_FUNC (__csinh) (CFLOAT x) } declare_mgen_alias (__csinh, csinh) - -#if M_LIBM_NEED_COMPAT (csinh) -declare_mgen_libm_compat (__csinh, csinh) -#endif diff --git a/math/s_csqrt_template.c b/math/s_csqrt_template.c index 69cf77c..a94195a 100644 --- a/math/s_csqrt_template.c +++ b/math/s_csqrt_template.c @@ -158,7 +158,3 @@ M_DECL_FUNC (__csqrt) (CFLOAT x) return res; } declare_mgen_alias (__csqrt, csqrt) - -#if M_LIBM_NEED_COMPAT (csqrt) -declare_mgen_libm_compat (__csqrt, csqrt) -#endif diff --git a/math/s_ctan_template.c b/math/s_ctan_template.c index baf6030..723156e 100644 --- a/math/s_ctan_template.c +++ b/math/s_ctan_template.c @@ -124,7 +124,3 @@ M_DECL_FUNC (__ctan) (CFLOAT x) } declare_mgen_alias (__ctan, ctan) - -#if M_LIBM_NEED_COMPAT (ctan) -declare_mgen_libm_compat (__ctan, ctan) -#endif diff --git a/math/s_ctanh_template.c b/math/s_ctanh_template.c index 1c00d14..96873dd 100644 --- a/math/s_ctanh_template.c +++ b/math/s_ctanh_template.c @@ -124,7 +124,3 @@ M_DECL_FUNC (__ctanh) (CFLOAT x) } declare_mgen_alias (__ctanh, ctanh) - -#if M_LIBM_NEED_COMPAT (ctanh) -declare_mgen_libm_compat (__ctanh, ctanh) -#endif diff --git a/math/s_fdim_template.c b/math/s_fdim_template.c index 967777a..1fa4b7c 100644 --- a/math/s_fdim_template.c +++ b/math/s_fdim_template.c @@ -34,7 +34,3 @@ M_DECL_FUNC (__fdim) (FLOAT x, FLOAT y) return r; } declare_mgen_alias (__fdim, fdim); - -#if M_LIBM_NEED_COMPAT (fdim) -declare_mgen_libm_compat (__fdim, fdim) -#endif diff --git a/math/s_fmax_template.c b/math/s_fmax_template.c index 0471ab5..fe812c7 100644 --- a/math/s_fmax_template.c +++ b/math/s_fmax_template.c @@ -33,7 +33,3 @@ M_DECL_FUNC (__fmax) (FLOAT x, FLOAT y) } declare_mgen_alias (__fmax, fmax); - -#if M_LIBM_NEED_COMPAT (fmax) -declare_mgen_libm_compat (__fmax, fmax) -#endif diff --git a/math/s_fmin_template.c b/math/s_fmin_template.c index 5f81409..5e8460a 100644 --- a/math/s_fmin_template.c +++ b/math/s_fmin_template.c @@ -33,7 +33,3 @@ M_DECL_FUNC (__fmin) (FLOAT x, FLOAT y) return isnan (y) ? x : y; } declare_mgen_alias (__fmin, fmin); - -#if M_LIBM_NEED_COMPAT (fmin) -declare_mgen_libm_compat (__fmin, fmin) -#endif diff --git a/math/s_nan_template.c b/math/s_nan_template.c index 010dacb..80a9aea 100644 --- a/math/s_nan_template.c +++ b/math/s_nan_template.c @@ -31,7 +31,3 @@ M_DECL_FUNC (__nan) (const char *tagp) } declare_mgen_alias (__nan, nan) - -#if M_LIBM_NEED_COMPAT (nan) -declare_mgen_libm_compat (__nan, nan) -#endif diff --git a/math/w_ilogb_template.c b/math/w_ilogb_template.c index f18dd42..a611f00 100644 --- a/math/w_ilogb_template.c +++ b/math/w_ilogb_template.c @@ -36,7 +36,3 @@ M_DECL_FUNC (__ilogb) (FLOAT x) return r; } declare_mgen_alias (__ilogb, ilogb) - -#if M_LIBM_NEED_COMPAT (ilogb) -declare_mgen_libm_compat (__ilogb, ilogb) -#endif |