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.23-457-ga6a4395


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  a6a4395d2075228c2514c38707307be41006f498 (commit)
      from  e0835a5354aba6015648473a727823ea434a48e6 (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=a6a4395d2075228c2514c38707307be41006f498

commit a6a4395d2075228c2514c38707307be41006f498
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Fri Jun 10 23:16:27 2016 +0000

    Fix modf (sNaN) (bug 20240).
    
    Various modf implementations return sNaN (both outputs) for sNaN
    input.  In fact they contain code to convert sNaN to qNaN for both
    outputs, but the way this is done is multiplying by 1.0 (for a wider
    range of inputs that includes NaNs as well as numbers with exponent
    large enough to ensure that they are integers), and that
    multiplication by 1.0 is optimized away by GCC in the absence of
    -fsignaling-nans, unlike other operations on NaNs used for this
    purpose that are not no-ops for non-sNaN input.  This patch arranges
    for those files to be built with -fsignaling-nans so that this
    existing code is effective as intended.
    
    Tested for x86_64 and x86.
    
    	[BZ #20240]
    	* math/Makefile (CFLAGS-s_modf.c): New variable.
    	(CFLAGS-s_modff.c): Likewise.
    	(CFLAGS-s_modfl.c): Likewise.
    	* math/libm-test.inc (modf_test_data): Add sNaN tests.

diff --git a/ChangeLog b/ChangeLog
index fd2ea8a..94caf57 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2016-06-10  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #20240]
+	* math/Makefile (CFLAGS-s_modf.c): New variable.
+	(CFLAGS-s_modff.c): Likewise.
+	(CFLAGS-s_modfl.c): Likewise.
+	* math/libm-test.inc (modf_test_data): Add sNaN tests.
+
 2016-06-09  Carlos O'Donell  <carlos@redhat.com>
 
 	[BZ #20215]
diff --git a/math/Makefile b/math/Makefile
index f0265bb..6cd3cf1 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -302,6 +302,12 @@ ifneq ($(long-double-fcts),yes)
 math-CPPFLAGS += -DNO_LONG_DOUBLE -D_Mlong_double_=double
 endif
 
+# These files quiet sNaNs in a way that is optimized away without
+# -fsignaling-nans.
+CFLAGS-s_modf.c += -fsignaling-nans
+CFLAGS-s_modff.c += -fsignaling-nans
+CFLAGS-s_modfl.c += -fsignaling-nans
+
 # The -lieee library is actually an object file.
 # The module just defines the _LIB_VERSION_ variable.
 # It's not a library to make sure it is linked in instead of s_lib_version.o.
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 2df6f29..3d901ae 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -9759,6 +9759,8 @@ static const struct test_fF_f1_data modf_test_data[] =
     TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_fF_f1 (modf, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_fF_f1 (modf, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_fF_f1 (modf, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_fF_f1 (modf, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
     TEST_fF_f1 (modf, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_fF_f1 (modf, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_fF_f1 (modf, min_value, min_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog          |    8 ++++++++
 math/Makefile      |    6 ++++++
 math/libm-test.inc |    2 ++
 3 files changed, 16 insertions(+), 0 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]