Message ID | 5e1bad49-d2da-4051-7778-4ca1e2b83e70@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
On Tue, 13 Sep 2016, Paul E. Murphy wrote: > Use the GCC builtin instead. With the exception of the > files built from a template, they are unused. This > is preparation for making the s_nanF objects generated. > > * math/s_nanf.c: Remove __nanf undef. > * math/s_nan.c: Remove __nan undef. > * math/s_nanl.c: Remove __nanl undef. > > * sysdeps/generic/math_private.h (__nan): Remove macro > override. > (__nanf): Likewise. > (__nanl): Likewise. > > * sysdeps/generic/math-type-macros.h (M_NAN): define > using GCC builtin instead. OK. To be clear, this may change code generation, and those changes are appropriate (they have the effect of using a default NaN for the relevant type rather than the result of converting a default NaN for double to that type, which may be different on those platforms where a default NaN has all-1s mantissa).
Committed as fc7f469.
diff --git a/math/s_nan.c b/math/s_nan.c index d9af775..03e95f5 100644 --- a/math/s_nan.c +++ b/math/s_nan.c @@ -24,7 +24,6 @@ #include <ieee754.h> -#undef __nan double __nan (const char *tagp) { diff --git a/math/s_nanf.c b/math/s_nanf.c index 0dd6778..3046720 100644 --- a/math/s_nanf.c +++ b/math/s_nanf.c @@ -24,7 +24,6 @@ #include <ieee754.h> -#undef __nanf float __nanf (const char *tagp) { diff --git a/math/s_nanl.c b/math/s_nanl.c index e6149bc..4b7b3d5 100644 --- a/math/s_nanl.c +++ b/math/s_nanl.c @@ -24,7 +24,6 @@ #include <ieee754.h> -#undef __nanl long double __nanl (const char *tagp) { diff --git a/sysdeps/generic/math-type-macros.h b/sysdeps/generic/math-type-macros.h index bd9e25a..78b883c 100644 --- a/sysdeps/generic/math-type-macros.h +++ b/sysdeps/generic/math-type-macros.h @@ -74,7 +74,7 @@ #define __M_CONCAT(a,b) a ## b #define __M_CONCATX(a,b) __M_CONCAT(a,b) -#define M_NAN M_SUF (__nan) ("") +#define M_NAN M_SUF (__builtin_nan) ("") #define M_MAX_EXP __M_CONCATX (M_PFX, _MAX_EXP) #define M_MIN __M_CONCATX (M_PFX, _MIN) #define M_MAX __M_CONCATX (M_PFX, _MAX) diff --git a/sysdeps/generic/math_private.h b/sysdeps/generic/math_private.h index 24adcfb..28e5df0 100644 --- a/sysdeps/generic/math_private.h +++ b/sysdeps/generic/math_private.h @@ -775,11 +775,4 @@ libc_feresetround_noex_ctx (struct rm_ctx *ctx) SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_53bit, \ libc_feresetround_53bit) -#define __nan(str) \ - (__builtin_constant_p (str) && str[0] == '\0' ? NAN : __nan (str)) -#define __nanf(str) \ - (__builtin_constant_p (str) && str[0] == '\0' ? NAN : __nan (str)) -#define __nanl(str) \ - (__builtin_constant_p (str) && str[0] == '\0' ? NAN : __nan (str)) - #endif /* _MATH_PRIVATE_H_ */