diff --git a/ChangeLog b/ChangeLog index abcbfe1d61..2d4c6c56d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,22 @@ 2017-11-24 Joseph Myers + * sysdeps/generic/libm-alias-float128.h: Include . + (libm_alias_float128_other_r): If + [__HAVE_FLOAT64X && !__HAVE_FLOAT64X_LONG_DOUBLE], define f64x + alias. + (libm_alias_float128_r): Add semicolon after weak_alias call. + * sysdeps/generic/libm-alias-ldouble.h + (libm_alias_ldouble_other_r_f128): New macro. + (libm_alias_ldouble_other_r_f64x): Likewise. + (libm_alias_ldouble_other_r): Use libm_alias_ldouble_other_r_f128 + and libm_alias_ldouble_other_r_f64x. + (libm_alias_ldouble_r): Add semicolon after weak_alias call. + * sysdeps/ieee754/ldbl-opt/libm-alias-ldouble.h + (libm_alias_ldouble_other_r_f128): New macro. + (libm_alias_ldouble_other_r_f64x): Likewise. + (libm_alias_ldouble_other_r): Use libm_alias_ldouble_other_r_f128 + and libm_alias_ldouble_other_r_f64x. + * stdlib/strfroml.c: Always include . [__HAVE_FLOAT64X_LONG_DOUBLE] (strfromf64x): Define and later undefine as macro and define as weak alias. diff --git a/sysdeps/generic/libm-alias-float128.h b/sysdeps/generic/libm-alias-float128.h index 8a7ebf32ac..b739cdff99 100644 --- a/sysdeps/generic/libm-alias-float128.h +++ b/sysdeps/generic/libm-alias-float128.h @@ -19,12 +19,19 @@ #ifndef _LIBM_ALIAS_FLOAT128_H #define _LIBM_ALIAS_FLOAT128_H +#include + /* Define _FloatN / _FloatNx aliases (other than that for _Float128) for a _Float128 libm function that has internal name FROM ## f128 ## R and public names TO ## suffix ## R for each suffix of a supported _FloatN / _FloatNx floating-point type with the same format as _Float128. */ -#define libm_alias_float128_other_r(from, to, r) +#if __HAVE_FLOAT64X && !__HAVE_FLOAT64X_LONG_DOUBLE +# define libm_alias_float128_other_r(from, to, r) \ + weak_alias (from ## f128 ## r, to ## f64x ## r) +#else +# define libm_alias_float128_other_r(from, to, r) +#endif /* Likewise, but without the R suffix. */ #define libm_alias_float128_other(from, to) \ @@ -39,7 +46,7 @@ per format, not per type) or for obsolescent functions not provided for _FloatN types. */ #define libm_alias_float128_r(from, to, r) \ - weak_alias (from ## f128 ## r, to ## f128 ## r) \ + weak_alias (from ## f128 ## r, to ## f128 ## r); \ libm_alias_float128_other_r (from, to, r) /* Likewise, but without the R suffix. */ diff --git a/sysdeps/generic/libm-alias-ldouble.h b/sysdeps/generic/libm-alias-ldouble.h index 7b9bf9a0e3..0c568012f7 100644 --- a/sysdeps/generic/libm-alias-ldouble.h +++ b/sysdeps/generic/libm-alias-ldouble.h @@ -21,16 +21,27 @@ #include +#if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128 +# define libm_alias_ldouble_other_r_f128(from, to, r) \ + weak_alias (from ## l ## r, to ## f128 ## r) +#else +# define libm_alias_ldouble_other_r_f128(from, to, r) +#endif + +#if __HAVE_FLOAT64X_LONG_DOUBLE +# define libm_alias_ldouble_other_r_f64x(from, to, r) \ + weak_alias (from ## l ## r, to ## f64x ## r) +#else +# define libm_alias_ldouble_other_r_f64x(from, to, r) +#endif + /* Define _FloatN / _FloatNx aliases for a long double libm function that has internal name FROM ## l ## R and public names TO ## suffix ## R for each suffix of a supported _FloatN / _FloatNx floating-point type with the same format as long double. */ -#if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128 -# define libm_alias_ldouble_other_r(from, to, r) \ - weak_alias (from ## l ## r, to ## f128 ## r) -#else -# define libm_alias_ldouble_other_r(from, to, r) -#endif +#define libm_alias_ldouble_other_r(from, to, r) \ + libm_alias_ldouble_other_r_f128 (from, to, r); \ + libm_alias_ldouble_other_r_f64x (from, to, r) /* Likewise, but without the R suffix. */ #define libm_alias_ldouble_other(from, to) \ @@ -45,7 +56,7 @@ per format, not per type) or for obsolescent functions not provided for _FloatN types. */ #define libm_alias_ldouble_r(from, to, r) \ - weak_alias (from ## l ## r, to ## l ## r) \ + weak_alias (from ## l ## r, to ## l ## r); \ libm_alias_ldouble_other_r (from, to, r) /* Likewise, but without the R suffix. */ diff --git a/sysdeps/ieee754/ldbl-opt/libm-alias-ldouble.h b/sysdeps/ieee754/ldbl-opt/libm-alias-ldouble.h index ad31f69f1a..5b48fda6e3 100644 --- a/sysdeps/ieee754/ldbl-opt/libm-alias-ldouble.h +++ b/sysdeps/ieee754/ldbl-opt/libm-alias-ldouble.h @@ -23,16 +23,27 @@ #include #include +#if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128 +# define libm_alias_ldouble_other_r_f128(from, to, r) \ + weak_alias (from ## l ## r, to ## f128 ## r) +#else +# define libm_alias_ldouble_other_r_f128(from, to, r) +#endif + +#if __HAVE_FLOAT64X_LONG_DOUBLE +# define libm_alias_ldouble_other_r_f64x(from, to, r) \ + weak_alias (from ## l ## r, to ## f64x ## r) +#else +# define libm_alias_ldouble_other_r_f64x(from, to, r) +#endif + /* Define _FloatN / _FloatNx aliases for a long double libm function that has internal name FROM ## l ## R and public names TO ## suffix ## R for each suffix of a supported _FloatN / _FloatNx floating-point type with the same format as long double. */ -#if __HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128 -# define libm_alias_ldouble_other_r(from, to, r) \ - weak_alias (from ## l ## r, to ## f128 ## r) -#else -# define libm_alias_ldouble_other_r(from, to, r) -#endif +#define libm_alias_ldouble_other_r(from, to, r) \ + libm_alias_ldouble_other_r_f128 (from, to, r); \ + libm_alias_ldouble_other_r_f64x (from, to, r) /* Likewise, but without the R suffix. */ #define libm_alias_ldouble_other(from, to) \