aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-02-09 22:56:35 +0000
committerJoseph Myers <joseph@codesourcery.com>2018-02-09 22:56:35 +0000
commit31958338998aba1cca8090839a4c4866366d76cf (patch)
tree92472b81026df172cfa0d53fcda0e2add61112b6 /math
parent8e554659ad7722ff1d09c6fa68d7df8e75530dc8 (diff)
downloadglibc-31958338998aba1cca8090839a4c4866366d76cf.tar
glibc-31958338998aba1cca8090839a4c4866366d76cf.tar.gz
glibc-31958338998aba1cca8090839a4c4866366d76cf.tar.bz2
glibc-31958338998aba1cca8090839a4c4866366d76cf.zip
Handle narrowing function sNaN test disabling based on argument format.
Testing narrowing functions for x86_64 with GCC 6 showed up a further testsuite fix needed: there is no _Float128 sNaN support before GCC 7 on x86_64 / x86, and the existing tests of SNAN_TESTS only checked it for the return type, not for the argument type. This patch fixes the code to check SNAN_TESTS (ARG_FLOAT) as well (in a variable set in libm-test-driver.c, since libm-test-support.c is compiled only once for each choice of FLOAT). Tested for x86_64 and x86 with GCC 6 in conjunction with the main patch adding narrowing add functions. * math/libm-test-driver.c (snan_tests_arg): New variable. * math/libm-test-support.h (snan_tests_arg): New declaration. * math/libm-test-support.c (enable_test): Check snan_tests_arg.
Diffstat (limited to 'math')
-rw-r--r--math/libm-test-driver.c6
-rw-r--r--math/libm-test-support.c3
-rw-r--r--math/libm-test-support.h1
3 files changed, 9 insertions, 1 deletions
diff --git a/math/libm-test-driver.c b/math/libm-test-driver.c
index 3713e7074f..30646da862 100644
--- a/math/libm-test-driver.c
+++ b/math/libm-test-driver.c
@@ -27,6 +27,12 @@ const int flag_test_finite = TEST_FINITE;
const int flag_test_inline = TEST_INLINE;
const int flag_test_mathvec = TEST_MATHVEC;
+#if TEST_NARROW
+const int snan_tests_arg = SNAN_TESTS (ARG_FLOAT);
+#else
+const int snan_tests_arg = SNAN_TESTS (FLOAT);
+#endif
+
#define STRX(x) #x
#define STR(x) STRX (x)
#define STR_FLOAT STR (FLOAT)
diff --git a/math/libm-test-support.c b/math/libm-test-support.c
index e59f15b4d9..1a12ed6a39 100644
--- a/math/libm-test-support.c
+++ b/math/libm-test-support.c
@@ -985,7 +985,8 @@ enable_test (int exceptions)
return 0;
if (flag_test_finite && (exceptions & NON_FINITE) != 0)
return 0;
- if (!SNAN_TESTS (FLOAT) && (exceptions & TEST_SNAN) != 0)
+ if ((!SNAN_TESTS (FLOAT) || !snan_tests_arg)
+ && (exceptions & TEST_SNAN) != 0)
return 0;
if (flag_test_mathvec && (exceptions & NO_TEST_MATHVEC) != 0)
return 0;
diff --git a/math/libm-test-support.h b/math/libm-test-support.h
index 64206ab7fa..42637741ab 100644
--- a/math/libm-test-support.h
+++ b/math/libm-test-support.h
@@ -37,6 +37,7 @@ extern const int flag_test_exceptions;
extern const int flag_test_finite;
extern const int flag_test_inline;
extern const int flag_test_mathvec;
+extern const int snan_tests_arg;
extern const char test_msg[];
extern const char qtype_str[];
extern const char doc[];