From ac2f9e23ecd197758e7cc2ca1b8717add3d8762b Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Thu, 11 Feb 2016 20:23:10 -0600 Subject: [PATCH] Remove broken ieeefp.h macros Any attempt to use isnanf, isinff, or finitef from with GCC 5 on platforms other than SPU result in a "lvalue required as unary '&' operand" error. newlib/libc/ * include/ieeefp.h (__ieeefp_isnanf): Remove broken macro. (__ieeefp_isinff, __ieeefp_finitef): Ditto. Signed-off-by: Yaakov Selkowitz --- newlib/libc/include/ieeefp.h | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/newlib/libc/include/ieeefp.h b/newlib/libc/include/ieeefp.h index 9eb274d86..2ffa456bb 100644 --- a/newlib/libc/include/ieeefp.h +++ b/newlib/libc/include/ieeefp.h @@ -270,22 +270,17 @@ int _EXFUN(finitef, (float)); #define __IEEE_DBL_NAN_EXP 0x7ff #define __IEEE_FLT_NAN_EXP 0xff -#ifndef __ieeefp_isnanf -#define __ieeefp_isnanf(x) (((*(long *)&(x) & 0x7f800000L)==0x7f800000L) && \ - ((*(long *)&(x) & 0x007fffffL)!=0000000000L)) -#endif +#ifdef __ieeefp_isnanf #define isnanf(x) __ieeefp_isnanf(x) - -#ifndef __ieeefp_isinff -#define __ieeefp_isinff(x) (((*(long *)&(x) & 0x7f800000L)==0x7f800000L) && \ - ((*(long *)&(x) & 0x007fffffL)==0000000000L)) #endif -#define isinff(x) __ieeefp_isinff(x) -#ifndef __ieeefp_finitef -#define __ieeefp_finitef(x) (((*(long *)&(x) & 0x7f800000L)!=0x7f800000L)) +#ifdef __ieeefp_isinff +#define isinff(x) __ieeefp_isinff(x) #endif + +#ifdef __ieeefp_finitef #define finitef(x) __ieeefp_finitef(x) +#endif #ifdef _DOUBLE_IS_32BITS #undef __IEEE_DBL_EXPBIAS -- 2.43.5