This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.26.9000-826-g6e70d15
- From: jsm28 at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 24 Nov 2017 23:33:36 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.26.9000-826-g6e70d15
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 6e70d156c71ba94e50e857f6459e34943a094bed (commit)
from df2806cdb57cb765aca169d17308eb4f0e89369f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6e70d156c71ba94e50e857f6459e34943a094bed
commit 6e70d156c71ba94e50e857f6459e34943a094bed
Author: Joseph Myers <joseph@codesourcery.com>
Date: Fri Nov 24 23:33:14 2017 +0000
Support _Float64x in libm_alias macros.
This patch adds support for libm_alias_ldouble and libm_alias_float128
to create *f64x function aliases when appropriate.
Making such aliases work for functions defined in assembly sources
requires adding some semicolons after weak_alias calls in alias macro
definitions. For C, semicolons are already present in the macros
called when required, but a GNU C extension allows excess semicolons
at file scope in a source file (and glibc already uses this), so it is
OK to have extra semicolons present in the macro definitions. For
assembly sources, making multiple alias macro calls from a single
macro expansion means there are no newlines between the calls, so an
explicit separator is needed. If hppa were to have .S sources in
libm, a more complicated approach would be needed that used
ASM_LINE_SEP when building assembly sources but not for C, but right
now there are no such sources so just using a semicolon (as already
present unconditionally in some such macro expansions) suffices.
Tested for x86_64, including in conjunction with _Float64x support
patches.
* sysdeps/generic/libm-alias-float128.h: Include <bits/floatn.h>.
(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.
diff --git a/ChangeLog b/ChangeLog
index abcbfe1..2d4c6c5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,22 @@
2017-11-24 Joseph Myers <joseph@codesourcery.com>
+ * sysdeps/generic/libm-alias-float128.h: Include <bits/floatn.h>.
+ (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 <stdlib.h>.
[__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 8a7ebf3..b739cdf 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 <bits/floatn.h>
+
/* 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 7b9bf9a..0c56801 100644
--- a/sysdeps/generic/libm-alias-ldouble.h
+++ b/sysdeps/generic/libm-alias-ldouble.h
@@ -21,17 +21,28 @@
#include <bits/floatn.h>
-/* 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) \
+# 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(from, to, r)
+# 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. */
+#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) \
libm_alias_ldouble_other_r (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 ad31f69..5b48fda 100644
--- a/sysdeps/ieee754/ldbl-opt/libm-alias-ldouble.h
+++ b/sysdeps/ieee754/ldbl-opt/libm-alias-ldouble.h
@@ -23,17 +23,28 @@
#include <math_ldbl_opt.h>
#include <ldbl-compat-choose.h>
-/* 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) \
+# 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(from, to, r)
+# 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. */
+#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) \
libm_alias_ldouble_other_r (from, to, )
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 17 +++++++++++++++++
sysdeps/generic/libm-alias-float128.h | 11 +++++++++--
sysdeps/generic/libm-alias-ldouble.h | 25 ++++++++++++++++++-------
sysdeps/ieee754/ldbl-opt/libm-alias-ldouble.h | 23 +++++++++++++++++------
4 files changed, 61 insertions(+), 15 deletions(-)
hooks/post-receive
--
GNU C Library master sources