diff options
author | Joseph Myers <joseph@codesourcery.com> | 2018-02-09 22:56:35 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2018-02-09 22:56:35 +0000 |
commit | 31958338998aba1cca8090839a4c4866366d76cf (patch) | |
tree | 92472b81026df172cfa0d53fcda0e2add61112b6 /math | |
parent | 8e554659ad7722ff1d09c6fa68d7df8e75530dc8 (diff) | |
download | glibc-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.c | 6 | ||||
-rw-r--r-- | math/libm-test-support.c | 3 | ||||
-rw-r--r-- | math/libm-test-support.h | 1 |
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[]; |