aboutsummaryrefslogtreecommitdiff
path: root/math/test-fesetexcept-traps.c
diff options
context:
space:
mode:
Diffstat (limited to 'math/test-fesetexcept-traps.c')
-rw-r--r--math/test-fesetexcept-traps.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/math/test-fesetexcept-traps.c b/math/test-fesetexcept-traps.c
index 71b6e45b33..7efcd0343a 100644
--- a/math/test-fesetexcept-traps.c
+++ b/math/test-fesetexcept-traps.c
@@ -39,16 +39,24 @@ do_test (void)
return result;
}
- if (EXCEPTION_SET_FORCES_TRAP)
- {
- puts ("setting exceptions traps, cannot test on this architecture");
- return 77;
- }
- /* Verify fesetexcept does not cause exception traps. */
+ /* Verify fesetexcept does not cause exception traps. For architectures
+ where setting the exception might result in traps the function should
+ return a nonzero value. */
ret = fesetexcept (FE_ALL_EXCEPT);
+
+ _Static_assert (!(EXCEPTION_SET_FORCES_TRAP && !EXCEPTION_TESTS(float)),
+ "EXCEPTION_SET_FORCES_TRAP only makes sense if the "
+ "architecture suports exceptions");
+
if (ret == 0)
- puts ("fesetexcept (FE_ALL_EXCEPT) succeeded");
- else
+ {
+ if (EXCEPTION_SET_FORCES_TRAP)
+ {
+ puts ("unexpected fesetexcept success");
+ result = 1;
+ }
+ }
+ else if (!EXCEPTION_SET_FORCES_TRAP)
{
puts ("fesetexcept (FE_ALL_EXCEPT) failed");
if (EXCEPTION_TESTS (float))