+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]
}
declare_mgen_alias (__cabs, cabs)
-
-#if M_LIBM_NEED_COMPAT (cabs)
-declare_mgen_libm_compat (__cabs, cabs)
-#endif
}
declare_mgen_alias (__carg, carg)
-
-#if M_LIBM_NEED_COMPAT (carg)
-declare_mgen_libm_compat (__carg, carg)
-#endif
}
declare_mgen_alias (__cimag, cimag)
-
-#if M_LIBM_NEED_COMPAT (cimag)
-declare_mgen_libm_compat (__cimag, cimag)
-#endif
}
declare_mgen_alias (__conj, conj)
-
-#if M_LIBM_NEED_COMPAT (conj)
-declare_mgen_libm_compat (__conj, conj)
-#endif
}
declare_mgen_alias (__creal, creal)
-
-#if M_LIBM_NEED_COMPAT (creal)
-declare_mgen_libm_compat (__creal, creal)
-#endif
}
declare_mgen_alias (__cacos, cacos);
-
-#if M_LIBM_NEED_COMPAT (carg)
-declare_mgen_libm_compat (__cacos, cacos)
-#endif
}
declare_mgen_alias (__cacosh, cacosh)
-
-#if M_LIBM_NEED_COMPAT (cacosh)
-declare_mgen_libm_compat (__cacosh, cacosh)
-#endif
}
declare_mgen_alias (__casin, casin)
-
-#if M_LIBM_NEED_COMPAT (casin)
-declare_mgen_libm_compat (__casin, casin)
-#endif
}
declare_mgen_alias (__casinh, casinh)
-
-#if M_LIBM_NEED_COMPAT (casinh)
-declare_mgen_libm_compat (__casinh, casinh)
-#endif
}
declare_mgen_alias (__catan, catan)
-
-#if M_LIBM_NEED_COMPAT (catan)
-declare_mgen_libm_compat (__catan, catan)
-#endif
}
declare_mgen_alias (__catanh, catanh)
-
-#if M_LIBM_NEED_COMPAT (catanh)
-declare_mgen_libm_compat (__catanh, catanh)
-#endif
}
declare_mgen_alias (__ccos, ccos);
-
-#if M_LIBM_NEED_COMPAT (carg)
-declare_mgen_libm_compat (__ccos, ccos)
-#endif
}
declare_mgen_alias (__ccosh, ccosh);
-
-#if M_LIBM_NEED_COMPAT (carg)
-declare_mgen_libm_compat (__ccosh, ccosh)
-#endif
return retval;
}
declare_mgen_alias (__cexp, cexp)
-
-#if M_LIBM_NEED_COMPAT (cexp)
-declare_mgen_libm_compat (__cexp, cexp)
-#endif
}
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
}
declare_mgen_alias (__clog, clog)
-
-#if M_LIBM_NEED_COMPAT (clog)
-declare_mgen_libm_compat (__clog, clog)
-#endif
}
declare_mgen_alias (__cpow, cpow)
-
-#if M_LIBM_NEED_COMPAT (cpow)
-declare_mgen_libm_compat (__cpow, cpow)
-#endif
}
declare_mgen_alias (__cproj, cproj)
-
-#if M_LIBM_NEED_COMPAT (cproj)
-declare_mgen_libm_compat (__cproj, cproj)
-#endif
}
declare_mgen_alias (__csin, csin)
-
-#if M_LIBM_NEED_COMPAT (csin)
-declare_mgen_libm_compat (__csin, csin)
-#endif
}
declare_mgen_alias (__csinh, csinh)
-
-#if M_LIBM_NEED_COMPAT (csinh)
-declare_mgen_libm_compat (__csinh, csinh)
-#endif
return res;
}
declare_mgen_alias (__csqrt, csqrt)
-
-#if M_LIBM_NEED_COMPAT (csqrt)
-declare_mgen_libm_compat (__csqrt, csqrt)
-#endif
}
declare_mgen_alias (__ctan, ctan)
-
-#if M_LIBM_NEED_COMPAT (ctan)
-declare_mgen_libm_compat (__ctan, ctan)
-#endif
}
declare_mgen_alias (__ctanh, ctanh)
-
-#if M_LIBM_NEED_COMPAT (ctanh)
-declare_mgen_libm_compat (__ctanh, ctanh)
-#endif
return r;
}
declare_mgen_alias (__fdim, fdim);
-
-#if M_LIBM_NEED_COMPAT (fdim)
-declare_mgen_libm_compat (__fdim, fdim)
-#endif
}
declare_mgen_alias (__fmax, fmax);
-
-#if M_LIBM_NEED_COMPAT (fmax)
-declare_mgen_libm_compat (__fmax, fmax)
-#endif
return isnan (y) ? x : y;
}
declare_mgen_alias (__fmin, fmin);
-
-#if M_LIBM_NEED_COMPAT (fmin)
-declare_mgen_libm_compat (__fmin, fmin)
-#endif
}
declare_mgen_alias (__nan, nan)
-
-#if M_LIBM_NEED_COMPAT (nan)
-declare_mgen_libm_compat (__nan, nan)
-#endif
return r;
}
declare_mgen_alias (__ilogb, ilogb)
-
-#if M_LIBM_NEED_COMPAT (ilogb)
-declare_mgen_libm_compat (__ilogb, ilogb)
-#endif
--- /dev/null
+/* 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
#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. */
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 */
--- /dev/null
+/* 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
-/* 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
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>
--- /dev/null
+#define declare_mgen_alias(from, to) weak_alias (from, to)
+#include <math-type-macros-double.h>
+#include <w_log1p_template.c>
--- /dev/null
+#define declare_mgen_alias(from, to) weak_alias (from, to)
+#include <math-type-macros-double.h>
+#include <w_scalbln_template.c>
#define __fdim __fdim_vis3
#define declare_mgen_alias(t, f)
-#define M_LIBM_NEED_COMPAT(f) 0
#include <math/s_fdim.c>
<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>
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)