about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--math/Makefile6
-rw-r--r--math/libm-test.inc2
3 files changed, 16 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index fd2ea8ae08..94caf57615 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 f0265bb640..6cd3cf1f65 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 2df6f29a34..3d901ae96a 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),