about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog55
-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
-rw-r--r--sysdeps/generic/libm-alias-double.h42
-rw-r--r--sysdeps/generic/math-type-macros-double.h12
-rw-r--r--sysdeps/generic/math-type-macros.h17
-rw-r--r--sysdeps/ieee754/ldbl-opt/libm-alias-double.h44
-rw-r--r--sysdeps/ieee754/ldbl-opt/s_clog10.c (renamed from sysdeps/ieee754/ldbl-opt/math-type-macros-double.h)24
-rw-r--r--sysdeps/ieee754/ldbl-opt/s_ldexp.c2
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_log1p.c3
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_scalbln.c3
-rw-r--r--sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c1
-rw-r--r--sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c5
39 files changed, 165 insertions, 157 deletions
diff --git a/ChangeLog b/ChangeLog
index e77d24c4ae..e7b77cef33 100644
--- 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]
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
diff --git a/sysdeps/generic/libm-alias-double.h b/sysdeps/generic/libm-alias-double.h
new file mode 100644
index 0000000000..23b5990e36
--- /dev/null
+++ b/sysdeps/generic/libm-alias-double.h
@@ -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
diff --git a/sysdeps/generic/math-type-macros-double.h b/sysdeps/generic/math-type-macros-double.h
index f2c1bb872b..e978f9090c 100644
--- a/sysdeps/generic/math-type-macros-double.h
+++ b/sysdeps/generic/math-type-macros-double.h
@@ -27,14 +27,10 @@
 #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.  */
diff --git a/sysdeps/generic/math-type-macros.h b/sysdeps/generic/math-type-macros.h
index 5656724f40..6aaa2335b9 100644
--- a/sysdeps/generic/math-type-macros.h
+++ b/sysdeps/generic/math-type-macros.h
@@ -39,16 +39,7 @@
 
   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."
@@ -116,10 +107,4 @@
 # 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
index 0000000000..5ae4c8b338
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/libm-alias-double.h
@@ -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
diff --git a/sysdeps/ieee754/ldbl-opt/math-type-macros-double.h b/sysdeps/ieee754/ldbl-opt/s_clog10.c
index 67b5268dc4..ec52218975 100644
--- a/sysdeps/ieee754/ldbl-opt/math-type-macros-double.h
+++ b/sysdeps/ieee754/ldbl-opt/s_clog10.c
@@ -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
@@ -16,23 +16,13 @@
    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
diff --git a/sysdeps/ieee754/ldbl-opt/s_ldexp.c b/sysdeps/ieee754/ldbl-opt/s_ldexp.c
index 809080a149..5a875aeac1 100644
--- a/sysdeps/ieee754/ldbl-opt/s_ldexp.c
+++ b/sysdeps/ieee754/ldbl-opt/s_ldexp.c
@@ -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
index 0000000000..ad0524708e
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/w_log1p.c
@@ -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
index 0000000000..495169ff37
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/w_scalbln.c
@@ -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>
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c
index 8c3666da7a..daa477b87a 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c
@@ -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>
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c
index 417b8690d6..ff3acd4086 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c
@@ -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)