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> 2018-01-02 Joseph Myers <joseph@codesourcery.com>
* sysdeps/mips/mips32/libm-test-ulps: Update. * 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_ERRNO 1 /* errno set by math functions. */
# define MATH_ERREXCEPT 2 /* Exceptions raised by math functions. */ # define MATH_ERREXCEPT 2 /* Exceptions raised by math functions. */
/* By default all functions support both errno and exception handling. /* By default all math functions support both errno and exception handling
In gcc's fast math mode and if inline functions are defined this (except for soft floating point implementations which may only support
might not be true. */ errno handling). If errno handling is disabled, exceptions are still
# ifndef __FAST_MATH__ 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) # define math_errhandling (MATH_ERRNO | MATH_ERREXCEPT)
# endif # endif