This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]