diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | math/math.h | 14 |
2 files changed, 15 insertions, 4 deletions
@@ -1,3 +1,8 @@ +2018-01-02 Wilco Dijkstra <wdijkstr@arm.com> + + * math/math.h (math_errhandling): Set to 0 with __FAST_MATH__. + Add __NO_MATH_ERRNO__ check. + 2018-01-02 Joseph Myers <joseph@codesourcery.com> * sysdeps/mips/mips32/libm-test-ulps: Update. diff --git a/math/math.h b/math/math.h index 633681e..3c515f8 100644 --- a/math/math.h +++ b/math/math.h @@ -665,10 +665,16 @@ enum # define MATH_ERRNO 1 /* errno set by math functions. */ # define MATH_ERREXCEPT 2 /* Exceptions raised by math functions. */ -/* By default all functions support both errno and exception handling. - In gcc's fast math mode and if inline functions are defined this - might not be true. */ -# ifndef __FAST_MATH__ +/* By default all math functions support both errno and exception handling + (except for soft floating point implementations which may only support + errno handling). If errno handling is disabled, exceptions are still + supported by GLIBC. Set math_errhandling to 0 with -ffast-math (this is + nonconforming but it is more useful than leaving it undefined). */ +# ifdef __FAST_MATH__ +# define math_errhandling 0 +# elif defined __NO_MATH_ERRNO__ +# define math_errhandling (MATH_ERREXCEPT) +# else # define math_errhandling (MATH_ERRNO | MATH_ERREXCEPT) # endif |