Improve math_errhandling

Currently math_errhandling is always set to MATH_ERRNO | MATH_ERREXCEPT
even if -fno-math-errno is used.  It is not defined at all when fast-math
is used.  Set it to 0 with fast-math - this is noncomforming but more
useful than not define math_errhandling at all. Also take __NO_MATH_ERRNO__
into account and update comment.

	* math/math.h (math_errhandling): Set to 0 with __FAST_MATH__.
	Add __NO_MATH_ERRNO__ check.
This commit is contained in:
Wilco Dijkstra 2018-01-03 13:14:10 +00:00
parent 7eff095459
commit 3c7d031294
2 changed files with 15 additions and 4 deletions

View File

@ -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.

View File

@ -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