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.
This commit is contained in:
Joseph Myers 2017-09-13 01:13:30 +00:00
parent a891caff7a
commit 620ff9eea6
39 changed files with 165 additions and 157 deletions

View File

@ -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]

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View File

@ -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

View File

@ -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. */

View File

@ -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 */

View File

@ -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

View 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
@ -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
#include <s_clog10_template.c>
#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_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

View 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>

View File

@ -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>

View File

@ -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>

View 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>

View 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)