Introduce __isnanf() as an alias for isnanf(), and make the isnan()
macro expand to __isnanf() instead of isnanf() for float arguments. This change is needed because isnanf() isn't declared in strict POSIX or C99 mode. Compatibility note: Apps using isnan(float) that are compiled after this change won't link against an older libm. Reported by: Florian Forster <octo@verplant.org>
This commit is contained in:
parent
dd73646c6c
commit
efd0f253c2
@ -218,3 +218,8 @@ FBSD_1.1 {
|
||||
cprojf;
|
||||
cprojl;
|
||||
};
|
||||
|
||||
/* First added in 9.0-CURRENT */
|
||||
FBSD_1.2 {
|
||||
__isnanf;
|
||||
};
|
||||
|
@ -97,7 +97,7 @@ extern const union __nan_un {
|
||||
: (sizeof (x) == sizeof (double)) ? isinf(x) \
|
||||
: __isinfl(x))
|
||||
#define isnan(x) \
|
||||
((sizeof (x) == sizeof (float)) ? isnanf(x) \
|
||||
((sizeof (x) == sizeof (float)) ? __isnanf(x) \
|
||||
: (sizeof (x) == sizeof (double)) ? isnan(x) \
|
||||
: __isnanl(x))
|
||||
#define isnormal(x) \
|
||||
@ -179,6 +179,7 @@ int __isfinite(double) __pure2;
|
||||
int __isfinitel(long double) __pure2;
|
||||
int __isinff(float) __pure2;
|
||||
int __isinfl(long double) __pure2;
|
||||
int __isnanf(float) __pure2;
|
||||
int __isnanl(long double) __pure2;
|
||||
int __isnormalf(float) __pure2;
|
||||
int __isnormal(double) __pure2;
|
||||
|
@ -43,7 +43,7 @@ isnan(double d)
|
||||
#endif
|
||||
|
||||
int
|
||||
isnanf(float f)
|
||||
__isnanf(float f)
|
||||
{
|
||||
union IEEEf2bits u;
|
||||
|
||||
@ -60,3 +60,5 @@ __isnanl(long double e)
|
||||
mask_nbit_l(u);
|
||||
return (u.bits.exp == 32767 && (u.bits.manl != 0 || u.bits.manh != 0));
|
||||
}
|
||||
|
||||
__weak_reference(__isnanf, isnanf);
|
||||
|
Loading…
x
Reference in New Issue
Block a user