about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-01-02 20:47:17 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-01-02 20:47:17 +0000
commite082ac7533e75d3dbe5b949b09e843a65348d43b (patch)
tree3f6b4dfc18d2c084fd67af3d75d0fbd6fcceee0a
parentf39cd196c63fe3fe7a93168aa1c1e4e65b2fb2e3 (diff)
downloadglibc-e082ac7533e75d3dbe5b949b09e843a65348d43b.tar.gz
glibc-e082ac7533e75d3dbe5b949b09e843a65348d43b.tar.xz
glibc-e082ac7533e75d3dbe5b949b09e843a65348d43b.zip
Fix math/test-nearbyint-except for no-exceptions configurations.
The test math/test-nearbyint-except conditions some of its tests on an
EXCEPTION_TESTS call, not not all that need such a condition.  This
patch fixes it to use such a conditional for all its tests and to
return 77 (UNSUPPORTED) if none of the floating-point types tested
support exceptions.

Tested for mips64 soft float (where the test previously failed and is
now UNSUPPORTED); also tested for x86_64 to make sure the test still
PASSes in exceptions-supported cases.

	* math/test-nearbyint-except.c: Include <stdbool.h>.
	(any_supported): New variable.
	(TEST_FUNC): Return early if !EXCEPTION_TESTS (FLOAT).  Otherwise
	set any_supported.
	(do_test): Return 77 if no floating-point type supported
	exceptions.
-rw-r--r--ChangeLog7
-rw-r--r--math/test-nearbyint-except.c10
2 files changed, 16 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index e6b850ce69..b3b6df53ad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2017-01-02  Joseph Myers  <joseph@codesourcery.com>
 
+	* math/test-nearbyint-except.c: Include <stdbool.h>.
+	(any_supported): New variable.
+	(TEST_FUNC): Return early if !EXCEPTION_TESTS (FLOAT).  Otherwise
+	set any_supported.
+	(do_test): Return 77 if no floating-point type supported
+	exceptions.
+
 	* sysdeps/mips/math-tests.h (SNAN_TESTS_PRESERVE_PAYLOAD): Do not
 	condition on [__mips_hard_float].
 
diff --git a/math/test-nearbyint-except.c b/math/test-nearbyint-except.c
index 61b999f179..e33846c1d0 100644
--- a/math/test-nearbyint-except.c
+++ b/math/test-nearbyint-except.c
@@ -18,6 +18,7 @@
 
 #include <fenv.h>
 #include <math.h>
+#include <stdbool.h>
 #include <stdio.h>
 
 #include <math-tests.h>
@@ -26,11 +27,16 @@
 # define FE_INVALID 0
 #endif
 
+static bool any_supported = false;
+
 #define TEST_FUNC(NAME, FLOAT, SUFFIX)					\
 static int								\
 NAME (void)								\
 {									\
   int result = 0;							\
+  if (!EXCEPTION_TESTS (FLOAT))						\
+    return 0;								\
+  any_supported = true;							\
   volatile FLOAT a, b __attribute__ ((unused));				\
   a = 1.0;								\
   /* nearbyint must not clear already-raised exceptions.  */		\
@@ -44,7 +50,7 @@ NAME (void)								\
       result = 1;							\
     }									\
   /* But it mustn't lose exceptions from sNaN arguments.  */		\
-  if (SNAN_TESTS (FLOAT) && EXCEPTION_TESTS (FLOAT))			\
+  if (SNAN_TESTS (FLOAT))						\
     {									\
       static volatile FLOAT snan = __builtin_nans ## SUFFIX ("");	\
       volatile FLOAT c __attribute__ ((unused));			\
@@ -75,6 +81,8 @@ do_test (void)
 #ifndef NO_LONG_DOUBLE
   result |= ldouble_test ();
 #endif
+  if (!any_supported)
+    return 77;
   return result;
 }