Message ID | DB6PR0801MB205381D0194B7BE04BBAD5CD830D0@DB6PR0801MB2053.eurprd08.prod.outlook.com |
---|---|
State | New, archived |
Headers | show |
On Thu, 21 Dec 2017, Wilco Dijkstra wrote: > OK, setting to 0 for __FAST_MATH__ seems reasonable. Here is the revised patch: > > 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. > > ChangeLog: > 2017-12-21 Wilco Dijkstra <wdijkstr@arm.com> > > * math/math.h (math_errhandling): Add __NO_MATH_ERRNO__ check. This patch is OK.
diff --git a/math/math.h b/math/math.h index 72d7dc59391af71c4db9634998463b4f947b9f09..9bf0c66e862d15277f8e4f31f3b35b9d4a3ad958 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