Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/PHP-8.0' into PHP-8.1
Browse files Browse the repository at this point in the history
  • Loading branch information
zeriyoshi committed Aug 4, 2022
2 parents 832e0ef + 1ce2b56 commit 2d77746
Show file tree
Hide file tree
Showing 4 changed files with 2 additions and 48 deletions.
1 change: 1 addition & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ PHP NEWS

- Core:
. Fixed --CGI-- support of run-tests.php. (cmb)
. Fixed incorrect double to long casting in latest clang. (zeriyoshi)

- Date:
. Fixed bug GH-8730 (DateTime::diff miscalculation is same time zone of
Expand Down
34 changes: 0 additions & 34 deletions Zend/Zend.m4
Original file line number Diff line number Diff line change
Expand Up @@ -149,40 +149,6 @@ dnl Checks for library functions.
AC_CHECK_FUNCS(getpid kill sigsetjmp)
ZEND_CHECK_FLOAT_PRECISION
dnl Test whether double cast to long preserves least significant bits.
AC_MSG_CHECKING(whether double cast to long preserves least significant bits)
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <limits.h>
#include <stdlib.h>
int main()
{
if (sizeof(long) == 4) {
double d = (double) LONG_MIN * LONG_MIN + 2e9;
if ((long) d == 2e9 && (long) -d == -2e9) {
return 0;
}
} else if (sizeof(long) == 8) {
double correct = 18e18 - ((double) LONG_MIN * -2); /* Subtract ULONG_MAX + 1 */
if ((long) 18e18 == correct) { /* On 64-bit, only check between LONG_MAX and ULONG_MAX */
return 0;
}
}
return 1;
}
]])], [
AC_DEFINE([ZEND_DVAL_TO_LVAL_CAST_OK], 1, [Define if double cast to long preserves least significant bits])
AC_MSG_RESULT(yes)
], [
AC_MSG_RESULT(no)
], [
AC_MSG_RESULT(no)
])
])

dnl
Expand Down
4 changes: 1 addition & 3 deletions Zend/zend_operators.c
Original file line number Diff line number Diff line change
Expand Up @@ -3396,8 +3396,7 @@ ZEND_API const char* ZEND_FASTCALL zend_memnrstr_ex(const char *haystack, const
}
/* }}} */

#ifndef ZEND_DVAL_TO_LVAL_CAST_OK
# if SIZEOF_ZEND_LONG == 4
#if SIZEOF_ZEND_LONG == 4
ZEND_API zend_long ZEND_FASTCALL zend_dval_to_lval_slow(double d) /* {{{ */
{
double two_pow_32 = pow(2., 32.),
Expand Down Expand Up @@ -3427,4 +3426,3 @@ ZEND_API zend_long ZEND_FASTCALL zend_dval_to_lval_slow(double d)
}
/* }}} */
#endif
#endif
11 changes: 0 additions & 11 deletions Zend/zend_operators.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,16 +99,6 @@ ZEND_API const char* ZEND_FASTCALL zend_memnrstr_ex(const char *haystack, const
# define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
#endif

#ifdef ZEND_DVAL_TO_LVAL_CAST_OK
static zend_always_inline zend_long zend_dval_to_lval(double d)
{
if (EXPECTED(zend_finite(d)) && EXPECTED(!zend_isnan(d))) {
return (zend_long)d;
} else {
return 0;
}
}
#else
ZEND_API zend_long ZEND_FASTCALL zend_dval_to_lval_slow(double d);

static zend_always_inline zend_long zend_dval_to_lval(double d)
Expand All @@ -120,7 +110,6 @@ static zend_always_inline zend_long zend_dval_to_lval(double d)
}
return (zend_long)d;
}
#endif

/* Used to convert a string float to integer during an (int) cast */
static zend_always_inline zend_long zend_dval_to_lval_cap(double d)
Expand Down

0 comments on commit 2d77746

Please sign in to comment.