Remove custom implementation for inifinity and NAN as we can now rely on C99

Those ZEND_* constant variant are now identical to their C counterpart, we may considering removing them in the future.
This commit is contained in:
George Peter Banyard 2019-12-04 13:13:06 +01:00
parent 2d0b0d6448
commit 67f85573c5

View file

@ -438,49 +438,9 @@ char *alloca();
#define ZEND_BIT_TEST(bits, bit) \
(((bits)[(bit) / (sizeof((bits)[0])*8)] >> ((bit) & (sizeof((bits)[0])*8-1))) & 1)
/* We always define a function, even if there's a macro or expression we could
* alias, so that using it in contexts where we can't make function calls
* won't fail to compile on some machines and not others.
*/
static zend_always_inline double _zend_get_inf(void) /* {{{ */
{
#ifdef INFINITY
return INFINITY;
#elif HAVE_HUGE_VAL_INF
return HUGE_VAL;
#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha)
# define _zend_DOUBLE_INFINITY_HIGH 0x7ff00000
double val = 0.0;
((uint32_t*)&val)[1] = _zend_DOUBLE_INFINITY_HIGH;
((uint32_t*)&val)[0] = 0;
return val;
#elif HAVE_ATOF_ACCEPTS_INF
return atof("INF");
#else
return 1.0/0.0;
#endif
} /* }}} */
#define ZEND_INFINITY (_zend_get_inf())
#define ZEND_INFINITY INFINITY
static zend_always_inline double _zend_get_nan(void) /* {{{ */
{
#ifdef NAN
return NAN;
#elif HAVE_HUGE_VAL_NAN
return HUGE_VAL + -HUGE_VAL;
#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha)
# define _zend_DOUBLE_QUIET_NAN_HIGH 0xfff80000
double val = 0.0;
((uint32_t*)&val)[1] = _zend_DOUBLE_QUIET_NAN_HIGH;
((uint32_t*)&val)[0] = 0;
return val;
#elif HAVE_ATOF_ACCEPTS_NAN
return atof("NAN");
#else
return 0.0/0.0;
#endif
} /* }}} */
#define ZEND_NAN (_zend_get_nan())
#define ZEND_NAN NAN
#define ZEND_STRL(str) (str), (sizeof(str)-1)
#define ZEND_STRS(str) (str), (sizeof(str))