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-1102-ge134ca1
- From: jsm28 at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 9 Jan 2018 22:35:16 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.26.9000-1102-ge134ca1
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 e134ca175318e0f1c04b4e857f38efae091c35ce (commit)
from 311ba8dc4416467947eff2ab327854f124226309 (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=e134ca175318e0f1c04b4e857f38efae091c35ce
commit e134ca175318e0f1c04b4e857f38efae091c35ce
Author: Joseph Myers <joseph@codesourcery.com>
Date: Tue Jan 9 22:34:35 2018 +0000
Fix powerpc-nofpu complex long double functions spurious "invalid" exception (bug 22687).
For soft-float powerpc, various _Complex long double functions
generate spurious "invalid" exceptions, even with a compiler with GCC
bug 64811 fixed.
The problem is GCC's built-in fabsl expansion. Various files are
already built with -fno-builtin-fabsl because in this case (IBM long
double, for soft-float or e500v1) a fallback fabsl expansion based on
comparisons is used, which can produce the wrong sign of a zero
result. Those comparisons can also produce spurious exceptions for
NaN arguments. Furthermore, __builtin_fpclassify implemently uses
__builtin_fabsl, and is unaffected by -fno-builtin-fabsl, and the
fpclassify macro uses __builtin_fpclassify in the absence of
-fsignaling-nans. Thus, this patch arranges for the problem files
using fpclassify to be built with -fsignaling-nans in this case, to
avoid spurious exceptions from fpclassify.
Tested for powerpc (soft-float).
[BZ #22687]
* sysdeps/powerpc/nofpu/Makefile (CFLAGS-s_cacosl.c): New
variable.
(CFLAGS-s_cacoshl.c): Likewise.
(CFLAGS-s_casinhl.c): Likewise.
(CFLAGS-s_catanl.c): Likewise.
(CFLAGS-s_catanhl.c): Likewise.
(CFLAGS-s_cexpl.c): Likewise.
(CFLAGS-s_ccoshl.c): Add -fsignaling-nans.
(CFLAGS-s_csinhl.c): Likewise.
(CFLAGS-s_clogl.c): Likewise.
(CFLAGS-s_clog10l.c): Likewise.
(CFLAGS-s_csinl.c): Likewise.
(CFLAGS-s_csqrtl.c): Likewise.
diff --git a/ChangeLog b/ChangeLog
index 60058a0..ee77ccd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2018-01-09 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #22687]
+ * sysdeps/powerpc/nofpu/Makefile (CFLAGS-s_cacosl.c): New
+ variable.
+ (CFLAGS-s_cacoshl.c): Likewise.
+ (CFLAGS-s_casinhl.c): Likewise.
+ (CFLAGS-s_catanl.c): Likewise.
+ (CFLAGS-s_catanhl.c): Likewise.
+ (CFLAGS-s_cexpl.c): Likewise.
+ (CFLAGS-s_ccoshl.c): Add -fsignaling-nans.
+ (CFLAGS-s_csinhl.c): Likewise.
+ (CFLAGS-s_clogl.c): Likewise.
+ (CFLAGS-s_clog10l.c): Likewise.
+ (CFLAGS-s_csinl.c): Likewise.
+ (CFLAGS-s_csqrtl.c): Likewise.
+
2010-08-04 Emilio Pozuelo Monfort <pochu27@gmail.com>
2017-09-26 Svante Signell <svante.signell@gmail.com>
diff --git a/sysdeps/powerpc/nofpu/Makefile b/sysdeps/powerpc/nofpu/Makefile
index ed16321..09ecdf1 100644
--- a/sysdeps/powerpc/nofpu/Makefile
+++ b/sysdeps/powerpc/nofpu/Makefile
@@ -15,15 +15,29 @@ CPPFLAGS += -I../soft-fp/
# gcc-4.1.1 and may be too late for gcc-4.2. So we need these flags
# until the fix in a gcc release and glibc drops support for earlier
# versions of gcc.
+#
+# This bug can cause wrong signs of zero results from fabsl, and
+# spurious "invalid" exceptions from comparisons with NaN in the
+# default code sequence generated. The fpclassify expansion used by
+# __builtin_fpclassify, which is used in the absence of
+# -fsignaling-nans, uses __builtin_fabsl, and is not affected by
+# -fno-builtin-fabsl, so requiring -fsignaling-nans for some affected
+# source files.
CFLAGS-e_atan2l.c += -fno-builtin-fabsl
CFLAGS-e_hypotl.c += -fno-builtin-fabsl
CFLAGS-e_powl.c += -fno-builtin-fabsl
-CFLAGS-s_ccoshl.c += -fno-builtin-fabsl
-CFLAGS-s_csinhl.c += -fno-builtin-fabsl
-CFLAGS-s_clogl.c += -fno-builtin-fabsl
-CFLAGS-s_clog10l.c += -fno-builtin-fabsl
-CFLAGS-s_csinl.c += -fno-builtin-fabsl
-CFLAGS-s_csqrtl.c += -fno-builtin-fabsl
+CFLAGS-s_cacosl.c += -fsignaling-nans
+CFLAGS-s_cacoshl.c += -fsignaling-nans
+CFLAGS-s_casinhl.c += -fsignaling-nans
+CFLAGS-s_catanl.c += -fsignaling-nans
+CFLAGS-s_catanhl.c += -fsignaling-nans
+CFLAGS-s_ccoshl.c += -fno-builtin-fabsl -fsignaling-nans
+CFLAGS-s_cexpl.c += -fsignaling-nans
+CFLAGS-s_csinhl.c += -fno-builtin-fabsl -fsignaling-nans
+CFLAGS-s_clogl.c += -fno-builtin-fabsl -fsignaling-nans
+CFLAGS-s_clog10l.c += -fno-builtin-fabsl -fsignaling-nans
+CFLAGS-s_csinl.c += -fno-builtin-fabsl -fsignaling-nans
+CFLAGS-s_csqrtl.c += -fno-builtin-fabsl -fsignaling-nans
CFLAGS-w_acosl_compat.c += -fno-builtin-fabsl
CFLAGS-w_asinl_compat.c += -fno-builtin-fabsl
CFLAGS-w_atanhl_compat.c += -fno-builtin-fabsl
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 17 +++++++++++++++++
sysdeps/powerpc/nofpu/Makefile | 26 ++++++++++++++++++++------
2 files changed, 37 insertions(+), 6 deletions(-)
hooks/post-receive
--
GNU C Library master sources