aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-09-13 01:13:30 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-09-13 01:13:30 +0000
commit620ff9eea68d8edf0cdfb1e5cbb653993002484e (patch)
treeb47a2ab2ef0dd3a1174b6a432f5a44a8cacefe0e /math
parenta891caff7a911227627eb147e9bfcb7737b2bc2b (diff)
downloadglibc-620ff9eea68d8edf0cdfb1e5cbb653993002484e.tar
glibc-620ff9eea68d8edf0cdfb1e5cbb653993002484e.tar.gz
glibc-620ff9eea68d8edf0cdfb1e5cbb653993002484e.tar.bz2
glibc-620ff9eea68d8edf0cdfb1e5cbb653993002484e.zip
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.c4
-rw-r--r--math/carg_template.c4
-rw-r--r--math/cimag_template.c4
-rw-r--r--math/conj_template.c4
-rw-r--r--math/creal_template.c4
-rw-r--r--math/s_cacos_template.c4
-rw-r--r--math/s_cacosh_template.c4
-rw-r--r--math/s_casin_template.c4
-rw-r--r--math/s_casinh_template.c4
-rw-r--r--math/s_catan_template.c4
-rw-r--r--math/s_catanh_template.c4
-rw-r--r--math/s_ccos_template.c4
-rw-r--r--math/s_ccosh_template.c4
-rw-r--r--math/s_cexp_template.c4
-rw-r--r--math/s_clog10_template.c6
-rw-r--r--math/s_clog_template.c4
-rw-r--r--math/s_cpow_template.c4
-rw-r--r--math/s_cproj_template.c4
-rw-r--r--math/s_csin_template.c4
-rw-r--r--math/s_csinh_template.c4
-rw-r--r--math/s_csqrt_template.c4
-rw-r--r--math/s_ctan_template.c4
-rw-r--r--math/s_ctanh_template.c4
-rw-r--r--math/s_fdim_template.c4
-rw-r--r--math/s_fmax_template.c4
-rw-r--r--math/s_fmin_template.c4
-rw-r--r--math/s_nan_template.c4
-rw-r--r--math/w_ilogb_template.c4
28 files changed, 0 insertions, 114 deletions
diff --git a/math/cabs_template.c b/math/cabs_template.c
index c9592c15b6..21b8506b24 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 5d6066322e..9f7ad142f9 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 6284b57e1f..b24f001773 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 b71f338ebe..c21a1f140d 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 c658966a5b..8ccbe6f349 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 7629e55436..29cac62f10 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 1fe0f4f1dc..14f0b2a4e6 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 faa2f6beb2..c61c880a1f 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 8d7cc5c8f4..440e639ad9 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 dce613f77d..2434870fc7 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 21e06f5bae..f4f5605dba 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 01cbae3f5c..6584450df6 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 1ee6014374..d3ee8fc9b5 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 b2c77c1774..6290aca381 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 30d87b5a8a..1b004d1a9a 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 feb801ff07..37746a04ed 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 604d09501f..dd1d08d3eb 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 7f9e9f0fe5..0ab2727bd2 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 d52beb999b..5a38bf7299 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 d5ef5ae446..ecea37cc1e 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 69cf77c15c..a94195aa5f 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 baf603007f..723156eed4 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 1c00d14428..96873dd0a3 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 967777aff5..1fa4b7c607 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 0471ab57bc..fe812c7c1f 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 5f814095ce..5e8460ac5e 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 010dacbeee..80a9aea3b2 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 f18dd42e05..a611f00ffe 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