diff options
Diffstat (limited to 'stdlib/bug-getcontext.c')
-rw-r--r-- | stdlib/bug-getcontext.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/stdlib/bug-getcontext.c b/stdlib/bug-getcontext.c index 7db49c8499..133ee91eff 100644 --- a/stdlib/bug-getcontext.c +++ b/stdlib/bug-getcontext.c @@ -9,10 +9,25 @@ static int do_test (void) { -#if FE_ALL_EXCEPT == 0 - printf("Skipping test; no support for FP exceptions.\n"); -#else - int except_mask = FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW; + if (FE_ALL_EXCEPT == 0) + { + printf("Skipping test; no support for FP exceptions.\n"); + return 0; + } + + int except_mask = 0; +#ifdef FE_DIVBYZERO + except_mask |= FE_DIVBYZERO; +#endif +#ifdef FE_INVALID + except_mask |= FE_INVALID; +#endif +#ifdef FE_OVERFLOW + except_mask |= FE_OVERFLOW; +#endif +#ifdef FE_UNDERFLOW + except_mask |= FE_UNDERFLOW; +#endif int status = feenableexcept (except_mask); except_mask = fegetexcept (); @@ -44,7 +59,7 @@ do_test (void) printf("\nAt end fegetexcept() returned %d, expected: %d.\n", mask, except_mask); -#endif + return 0; } |