From 423a7160af7fcffc61aac5e2e36d0b6b5b083214 Mon Sep 17 00:00:00 2001 From: Wilco Date: Thu, 17 Apr 2014 09:39:27 +0100 Subject: Add fenv test support for targets which don't have FP traps. --- math/test-fenv.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'math') diff --git a/math/test-fenv.c b/math/test-fenv.c index 73cd1a7fb8..23e47d4f36 100644 --- a/math/test-fenv.c +++ b/math/test-fenv.c @@ -36,6 +36,7 @@ #include #include #include +#include /* Since not all architectures might define all exceptions, we define @@ -233,14 +234,9 @@ feenv_nomask_test (const char *flag_name, int fe_exc) #if defined FE_NOMASK_ENV int status; pid_t pid; - fenv_t saved; - fegetenv (&saved); - errno = 0; - fesetenv (FE_NOMASK_ENV); - status = errno; - fesetenv (&saved); - if (status == ENOSYS) + if (!EXCEPTION_ENABLE_SUPPORTED (FE_ALL_EXCEPT) + && fesetenv (FE_NOMASK_ENV) != 0) { printf ("Test: not testing FE_NOMASK_ENV, it isn't implemented.\n"); return; @@ -349,7 +345,13 @@ feexcp_nomask_test (const char *flag_name, int fe_exc) int status; pid_t pid; - printf ("Test: after fedisableexcept (%s) processes will abort\n", + if (!EXCEPTION_ENABLE_SUPPORTED (fe_exc) && feenableexcept (fe_exc) == -1) + { + printf ("Test: not testing feenableexcept, it isn't implemented.\n"); + return; + } + + printf ("Test: after feenableexcept (%s) processes will abort\n", flag_name); printf (" when feraiseexcept (%s) is called.\n", flag_name); pid = fork (); @@ -470,7 +472,6 @@ feenable_test (const char *flag_name, int fe_exc) { int excepts; - printf ("Tests for feenableexcepts etc. with flag %s\n", flag_name); /* First disable all exceptions. */ @@ -488,8 +489,12 @@ feenable_test (const char *flag_name, int fe_exc) flag_name, excepts); ++count_errors; } - excepts = feenableexcept (fe_exc); + if (!EXCEPTION_ENABLE_SUPPORTED (fe_exc) && excepts == -1) + { + printf ("Test: not testing feenableexcept, it isn't implemented.\n"); + return; + } if (excepts == -1) { printf ("Test: feenableexcept (%s) failed\n", flag_name); -- cgit 1.4.1