This is the mail archive of the libc-alpha@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]

Fix math/test-nearbyint-except for no-exceptions configurations [committed]


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.  Committed.

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.

diff --git a/math/test-nearbyint-except.c b/math/test-nearbyint-except.c
index 61b999f..e33846c 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;
 }
 

-- 
Joseph S. Myers
joseph@codesourcery.com


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