diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2012-05-17 08:49:19 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2012-05-17 08:50:41 -0400 |
commit | 0af797def371ceb4f05586d7bcd25841653d2082 (patch) | |
tree | 3aa5591836c95fba6b694fb45c1421bf0025de91 /math/test-misc.c | |
parent | e39745ffa030f685fbba13534a3023d52a27ead8 (diff) | |
download | glibc-0af797def371ceb4f05586d7bcd25841653d2082.tar.gz glibc-0af797def371ceb4f05586d7bcd25841653d2082.tar.xz glibc-0af797def371ceb4f05586d7bcd25841653d2082.zip |
math: support platforms with limited FP rounding or exception support
For some tests, just claim that fetestexcept() always returns true, so the rest of the test can be compiled. For libm-test, provide known bogus values for unsupported rounding modes, so fesetround() will return failure. Elsewhere, just add some #ifdefs to avoid code that uses particular FP exceptions if the exceptions aren't supported.
Diffstat (limited to 'math/test-misc.c')
-rw-r--r-- | math/test-misc.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/math/test-misc.c b/math/test-misc.c index c0fe5f7a18..55da359ce5 100644 --- a/math/test-misc.c +++ b/math/test-misc.c @@ -1186,12 +1186,14 @@ main (void) (void) &f2; feclearexcept (FE_ALL_EXCEPT); f2 += f1; +#if defined(FE_OVERFLOW) && defined(FE_INEXACT) int fe = fetestexcept (FE_ALL_EXCEPT); if (fe != (FE_OVERFLOW | FE_INEXACT)) { printf ("float overflow test failed: %x\n", fe); result = 1; } +#endif volatile double d1 = DBL_MAX; volatile double d2 = DBL_MAX / 2; @@ -1199,12 +1201,14 @@ main (void) (void) &d2; feclearexcept (FE_ALL_EXCEPT); d2 += d1; +#if defined(FE_OVERFLOW) && defined(FE_INEXACT) fe = fetestexcept (FE_ALL_EXCEPT); if (fe != (FE_OVERFLOW | FE_INEXACT)) { printf ("double overflow test failed: %x\n", fe); result = 1; } +#endif #ifndef NO_LONG_DOUBLE volatile long double ld1 = LDBL_MAX; @@ -1213,12 +1217,14 @@ main (void) (void) &ld2; feclearexcept (FE_ALL_EXCEPT); ld2 += ld1; +# if defined(FE_OVERFLOW) && defined(FE_INEXACT) fe = fetestexcept (FE_ALL_EXCEPT); if (fe != (FE_OVERFLOW | FE_INEXACT)) { printf ("long double overflow test failed: %x\n", fe); result = 1; } +# endif #endif #if !defined NO_LONG_DOUBLE && LDBL_MANT_DIG == 113 |