]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Define and use libm_alias_double.
authorJoseph Myers <joseph@codesourcery.com>
Wed, 13 Sep 2017 01:13:30 +0000 (01:13 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Wed, 13 Sep 2017 01:13:30 +0000 (01:13 +0000)
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.

39 files changed:
ChangeLog
math/cabs_template.c
math/carg_template.c
math/cimag_template.c
math/conj_template.c
math/creal_template.c
math/s_cacos_template.c
math/s_cacosh_template.c
math/s_casin_template.c
math/s_casinh_template.c
math/s_catan_template.c
math/s_catanh_template.c
math/s_ccos_template.c
math/s_ccosh_template.c
math/s_cexp_template.c
math/s_clog10_template.c
math/s_clog_template.c
math/s_cpow_template.c
math/s_cproj_template.c
math/s_csin_template.c
math/s_csinh_template.c
math/s_csqrt_template.c
math/s_ctan_template.c
math/s_ctanh_template.c
math/s_fdim_template.c
math/s_fmax_template.c
math/s_fmin_template.c
math/s_nan_template.c
math/w_ilogb_template.c
sysdeps/generic/libm-alias-double.h [new file with mode: 0644]
sysdeps/generic/math-type-macros-double.h
sysdeps/generic/math-type-macros.h
sysdeps/ieee754/ldbl-opt/libm-alias-double.h [new file with mode: 0644]
sysdeps/ieee754/ldbl-opt/s_clog10.c [moved from sysdeps/ieee754/ldbl-opt/math-type-macros-double.h with 56% similarity]
sysdeps/ieee754/ldbl-opt/s_ldexp.c
sysdeps/ieee754/ldbl-opt/w_log1p.c [new file with mode: 0644]
sysdeps/ieee754/ldbl-opt/w_scalbln.c [new file with mode: 0644]
sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c
sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c

index e77d24c4aeb56637bc47992ff1682129819ee6af..e7b77cef331040245708de54faff9c25f520aaaf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,58 @@
+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.
+
 2017-09-12  Joseph Myers  <joseph@codesourcery.com>
 
        * sysdeps/generic/math-type-macros.h [!declare_mgen_alias_2]
index c9592c15b618cd94315605b27ae68053fcfb0922..21b8506b2490ff101366ebc3f0e08a488327f541 100644 (file)
@@ -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
index 5d6066322e79679b80c37b26c11fc320637b73ae..9f7ad142f9d48be817eb5cd961f184d493f94b29 100644 (file)
@@ -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
index 6284b57e1f3293a19ac89a2185d12d9926cfab07..b24f001773f1a38d658dd7e8a88d37bf1ec76db4 100644 (file)
@@ -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
index b71f338ebeb4232b6365e3633530cee7b1968c26..c21a1f140d66beb1eafd3f2c8f90f20d87b1903a 100644 (file)
@@ -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
index c658966a5bd79c325e11dac7087427ea95266177..8ccbe6f349d128d970769f8ab8b88fc7b824c45d 100644 (file)
@@ -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
index 7629e554367dac513e32244de344bc222b0a01a8..29cac62f10267ff36213cb93aba183e1d5957c04 100644 (file)
@@ -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
index 1fe0f4f1dc706233f36779f87d1b72947fefc5ac..14f0b2a4e6b22f3602851c562081aaafbf891701 100644 (file)
@@ -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
index faa2f6beb2a532807d995d2f0272e6fa5a83feba..c61c880a1fc04ad2a0bcf702f4ac294dc2bb57a0 100644 (file)
@@ -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
index 8d7cc5c8f40ba202f16b68539b5a9fab8ca2b60b..440e639ad92c7fb872d35b7156c27d8ebb76ba73 100644 (file)
@@ -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
index dce613f77db019954b13fe80ba701468dcaf216e..2434870fc7167dd282b0cec2b90aa3ae9ac54258 100644 (file)
@@ -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
index 21e06f5bae337c62134cd892c4810bb11185dc74..f4f5605dba38855ba9bc4673a21c3c8795f19c95 100644 (file)
@@ -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
index 01cbae3f5c0b790a89c651544f206878b8930cbb..6584450df6d77acfd07991128f62aaf6c65e9aa7 100644 (file)
@@ -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
index 1ee601437411617a42671af679a927056b0e043c..d3ee8fc9b57ee2487723f3bb0963dba6b0f00aa1 100644 (file)
@@ -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
index b2c77c17740cdeec182dd9cbfa81e232cbc50d5c..6290aca381932964b01ebba0d1369c095cc292cd 100644 (file)
@@ -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
index 30d87b5a8a7de290179c9737272cb24c5176415d..1b004d1a9afd2647a7d8db47011929c3dedf2e33 100644 (file)
@@ -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
index feb801ff07340e41562a4b9d785d24747fbf3600..37746a04ed0dc93a86882bf47aee704c5461ced9 100644 (file)
@@ -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
index 604d09501fd0a5c89dc6bdecdd4d2b8dc5898cd0..dd1d08d3eb79cd294b84a99fdce8cf79980b70de 100644 (file)
@@ -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
index 7f9e9f0fe5e367bea5c4143499348152744a5afd..0ab2727bd27a6481b97030acf49b2a3ff929c59c 100644 (file)
@@ -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
index d52beb999bb7e761eff6f89a4c2111c518a1a8fc..5a38bf729981db388e5e93aedad09b7a1c070217 100644 (file)
@@ -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
index d5ef5ae446ae4336844e42f4b9c7cd5d16fd0517..ecea37cc1e90074c887603ecdd8100b6f4389247 100644 (file)
@@ -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
index 69cf77c15cf7a780dbcb9e129e84006e6fca8a1a..a94195aa5f8534d4c081df10555c5ed37d53de23 100644 (file)
@@ -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
index baf603007f045504338b024b7e1f2938aca6aa17..723156eed42f96fcb23cc5fe710ac9be63ac593b 100644 (file)
@@ -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
index 1c00d14428f1560b53dc3d37ec48d7cd2da04a45..96873dd0a37fd37243c4de003dda464879ded49a 100644 (file)
@@ -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
index 967777aff5d3d44c783329924db6c921c4ac8801..1fa4b7c607f5ba07486c648d79ea9aa25b8f5b04 100644 (file)
@@ -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
index 0471ab57bc6a054d904183238ba7ed119e47759f..fe812c7c1f9637a546463b3f07edcb59a91f7997 100644 (file)
@@ -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
index 5f814095ce5e3fb4f722e6962e7ce1ca035574eb..5e8460ac5e48aad1a471a26c4fbf2c44923968a2 100644 (file)
@@ -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
index 010dacbeee3ee4146c70898ea6a77ecb6b45c9e4..80a9aea3b23fc53acb733a57e3be9378df25898c 100644 (file)
@@ -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
index f18dd42e0581cbaeb9cb38be900d66a80bb281bb..a611f00ffe80f4b12767612403f9d6e1ef38a883 100644 (file)
@@ -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
diff --git a/sysdeps/generic/libm-alias-double.h b/sysdeps/generic/libm-alias-double.h
new file mode 100644 (file)
index 0000000..23b5990
--- /dev/null
@@ -0,0 +1,42 @@
+/* Define aliases for libm double functions.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _LIBM_ALIAS_DOUBLE_H
+#define _LIBM_ALIAS_DOUBLE_H
+
+/* Define aliases for a double libm function that has internal name
+   FROM ## R and public names TO ## suffix ## R for each suffix of a
+   supported floating-point type with the same format as double.  This
+   should only be used for functions where such public names exist for
+   _FloatN types, not for implementation-namespace exported names
+   (where there is one name per format, not per type) or for
+   obsolescent functions not provided for _FloatN types.  */
+#ifdef NO_LONG_DOUBLE
+# define libm_alias_double_r(from, to, r)      \
+  weak_alias (from ## r, to ## r)              \
+  strong_alias (from ## r, from ## l ## r)     \
+  weak_alias (from ## r, to ## l ## r)
+#else
+# define libm_alias_double_r(from, to, r)      \
+  weak_alias (from ## r, to ## r)
+#endif
+
+/* Likewise, but without the R suffix.  */
+#define libm_alias_double(from, to) libm_alias_double_r (from, to, )
+
+#endif
index f2c1bb872b52cafb0f32e77d781dc9c0285ef67d..e978f9090c818aaaa1d5adec0843d2cfb814da4a 100644 (file)
 #define CFLOAT _Complex double
 #define M_STRTO_NAN __strtod_nan
 
-/* Machines without a distinct long double type
-   alias long double functions to their double
-   equivalent.  */
-#if defined NO_LONG_DOUBLE && !defined declare_mgen_alias
-# define declare_mgen_alias(from, to)      \
-   weak_alias (from, to)                   \
-   strong_alias (from, from ## l)          \
-   weak_alias (from, to ## l)
+#include <libm-alias-double.h>
+
+#ifndef declare_mgen_alias
+# define declare_mgen_alias(from, to) libm_alias_double (from, to)
 #endif
 
 /* Supply the generic macros.  */
index 5656724f40439d3dcacb0f989cbc9e7b25b0e6f9..6aaa2335b9b165ba5ec9384e730f10382e3b969c 100644 (file)
 
   declare_mgen_alias(from,to)
       This exposes the appropriate symbol(s) for a
-      function f of type FLOAT.
-
-  M_LIBM_NEED_COMPAT(func)
-      This is utilized in macro context to indicate
-      whether func should declare compat symbols.
-
-  declare_mgen_libm_compat(from,to)
-      This is used in conjunction with the above macro
-      outside of macro context to paste whatever is
-      required to generate a compat symbol. */
+      function f of type FLOAT.  */
 
 #ifndef M_PFX
 # error "M_PFX must be defined."
 # define declare_mgen_alias(from, to) weak_alias (M_SUF (from), M_SUF (to))
 #endif
 
-/* Do not generate anything for compat symbols by default.  */
-#ifndef M_LIBM_NEED_COMPAT
-# define M_LIBM_NEED_COMPAT(func) 0
-# define declare_mgen_libm_compat(from, to)
-#endif
-
 #endif /* _MATH_TYPE_MACROS */
diff --git a/sysdeps/ieee754/ldbl-opt/libm-alias-double.h b/sysdeps/ieee754/ldbl-opt/libm-alias-double.h
new file mode 100644 (file)
index 0000000..5ae4c8b
--- /dev/null
@@ -0,0 +1,44 @@
+/* Define aliases for libm double functions.  ldbl-opt version.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _LIBM_ALIAS_DOUBLE_H
+#define _LIBM_ALIAS_DOUBLE_H
+
+#include <math_ldbl_opt.h>
+#include <first-versions.h>
+#include <ldbl-compat-choose.h>
+
+/* Define aliases for a double libm function that has internal name
+   FROM ## R and public names TO ## suffix ## R for each suffix of a
+   supported floating-point type with the same format as double.  This
+   should only be used for functions where such public names exist for
+   _FloatN types, not for implementation-namespace exported names
+   (where there is one name per format, not per type) or for
+   obsolescent functions not provided for _FloatN types.  */
+#define libm_alias_double_r(from, to, r)                       \
+  weak_alias (from ## r, to ## r)                              \
+  LONG_DOUBLE_COMPAT_CHOOSE_libm_ ## to ## l ## r              \
+    (compat_symbol (libm,                                      \
+                   from ## r,                                  \
+                   to ## l ## r,                               \
+                   FIRST_VERSION_libm_ ## to ## l ## r), );
+
+/* Likewise, but without the R suffix.  */
+#define libm_alias_double(from, to) libm_alias_double_r (from, to, )
+
+#endif
similarity index 56%
rename from sysdeps/ieee754/ldbl-opt/math-type-macros-double.h
rename to sysdeps/ieee754/ldbl-opt/s_clog10.c
index 67b5268dc480ecd841762972396d7b3fab501f65..ec522189754faad9977c4d92b77eb29cf8d6375d 100644 (file)
@@ -1,5 +1,5 @@
-/* Overrides for ldbl-opt versioning for double types.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
+/* Define __clog10l compat symbol for clog10 for ldbl-opt.
+   Copyright (C) 2017 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _MATH_TYPE_MACROS_DOUBLE
-
 #include <math_ldbl_opt.h>
 #include <first-versions.h>
+#include <math-type-macros-double.h>
 
-/* Define compat symbols for long double on platforms
-   where it was not always a distinct type.  */
-#if !defined M_LIBM_NEED_COMPAT
-# define M_LIBM_NEED_COMPAT(f) \
-  LONG_DOUBLE_COMPAT (libm, FIRST_VERSION_libm_ ## f ## l)
-#endif
-
-#if !defined declare_mgen_libm_compat
-# define declare_mgen_libm_compat(from, to)          \
-  compat_symbol (libm, from, to ## l,                \
-                FIRST_VERSION_libm_ ## to ## l);
-#endif
+#include <s_clog10_template.c>
 
-#include_next <math-type-macros-double.h>
+#if LONG_DOUBLE_COMPAT (libm, FIRST_VERSION_libm___clog10l)
+strong_alias (__clog10, __clog10l_alias)
+compat_symbol (libm, __clog10l_alias, __clog10l, FIRST_VERSION_libm___clog10l);
 #endif
index 809080a14983075b5037293516be449370443655..5a875aeac1e1f4b50e5759e6aae2ee0732077366 100644 (file)
@@ -17,7 +17,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define M_LIBM_NEED_COMPAT(f) 0
+#define declare_mgen_alias(from, to) weak_alias (from, to)
 #include <math-type-macros-double.h>
 #include <s_ldexp_template.c>
 
diff --git a/sysdeps/ieee754/ldbl-opt/w_log1p.c b/sysdeps/ieee754/ldbl-opt/w_log1p.c
new file mode 100644 (file)
index 0000000..ad05247
--- /dev/null
@@ -0,0 +1,3 @@
+#define declare_mgen_alias(from, to) weak_alias (from, to)
+#include <math-type-macros-double.h>
+#include <w_log1p_template.c>
diff --git a/sysdeps/ieee754/ldbl-opt/w_scalbln.c b/sysdeps/ieee754/ldbl-opt/w_scalbln.c
new file mode 100644 (file)
index 0000000..495169f
--- /dev/null
@@ -0,0 +1,3 @@
+#define declare_mgen_alias(from, to) weak_alias (from, to)
+#include <math-type-macros-double.h>
+#include <w_scalbln_template.c>
index 8c3666da7a06db56c34380fcde7049e19d67a1d1..daa477b87abac03859996a392545d6a5aeba2865 100644 (file)
@@ -20,6 +20,5 @@
 
 #define __fdim __fdim_vis3
 #define declare_mgen_alias(t, f)
-#define M_LIBM_NEED_COMPAT(f) 0
 
 #include <math/s_fdim.c>
index 417b8690d6e96aa6bc9f03dc3e27ff27be59e93b..ff3acd40860f38d50c23ff2dd3e0e68826506bfe 100644 (file)
@@ -17,6 +17,8 @@
    <http://www.gnu.org/licenses/>.  */
 
 #ifdef HAVE_AS_VIS3_SUPPORT
+# include <math_ldbl_opt.h>
+# include <first-versions.h>
 # include <sparc-ifunc.h>
 # include <math.h>
 
@@ -25,6 +27,9 @@ extern double __fdim_generic (double, double);
 
 sparc_libm_ifunc(__fdim, hwcap & HWCAP_SPARC_VIS3 ? __fdim_vis3 : __fdim_generic);
 weak_alias (__fdim, fdim)
+# if LONG_DOUBLE_COMPAT (libm, FIRST_VERSION_libm_fdiml)
+compat_symbol (libm, __fdim, fdiml, FIRST_VERSION_libm_fdiml);
+# endif
 
 # define __fdim __fdim_generic
 # define declare_mgen_alias(t, f)