summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--Zend/zend_float.c7
2 files changed, 6 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index eb88651544..007406315f 100644
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,7 @@ PHP NEWS
. Fixed bug #79489 (.user.ini does not inherit). (cmb)
. Fixed bug #79600 (Regression in 7.4.6 when yielding an array based
generator). (Nikita)
+ . Fixed bug #79595 (zend_init_fpu() alters FPU precision). (cmb, Nikita)
- FFI:
. Fixed bug #79571 (FFI: var_dumping unions may segfault). (cmb)
diff --git a/Zend/zend_float.c b/Zend/zend_float.c
index 90af0c4a5f..2d7e6529a5 100644
--- a/Zend/zend_float.c
+++ b/Zend/zend_float.c
@@ -22,7 +22,8 @@
ZEND_API void zend_init_fpu(void) /* {{{ */
{
-#if XPFPA_HAVE_CW
+/* under __SSE__ the FPCW is irrelevant; no need to change it */
+#if XPFPA_HAVE_CW && !defined(__SSE__)
XPFPA_DECLARE
if (!EG(saved_fpu_cw_ptr)) {
@@ -38,7 +39,7 @@ ZEND_API void zend_init_fpu(void) /* {{{ */
ZEND_API void zend_shutdown_fpu(void) /* {{{ */
{
-#if XPFPA_HAVE_CW
+#if XPFPA_HAVE_CW && !defined(__SSE__)
if (EG(saved_fpu_cw_ptr)) {
XPFPA_RESTORE_CW(EG(saved_fpu_cw_ptr));
}
@@ -49,8 +50,10 @@ ZEND_API void zend_shutdown_fpu(void) /* {{{ */
ZEND_API void zend_ensure_fpu_mode(void) /* {{{ */
{
+#ifndef __SSE__
XPFPA_DECLARE
XPFPA_SWITCH_DOUBLE();
+#endif
}
/* }}} */