com php-src: Disable "bad" optimisations only for emulation loop: Zend/zend_execute.c Zend/zend_vm_execute.h Zend/z end_vm_execute.skl
| From: | Dmitry Stogov | Date: | Thu, 30 May 2019 17:35:30 +0000 |
| Subject: | com php-src: Disable "bad" optimisations only for emulation loop: Zend/zend_execute.c Zend/zend_vm_execute.h Zend/z end_vm_execute.skl | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-106463@lists.php.net to get a copy of this message | ||
Commit: ee565529138891e757727de230af9051caeda05d
Author: Dmitry Stogov <dmitry@zend.com> Thu, 30 May 2019 20:35:30 +0300
Parents: 2ba9177d4f0de8c0c7fdc0ca6160415ec699f48d
Branches: PHP-7.4 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ee565529138891e757727de230af9051caeda05d
Log:
Disable "bad" optimisations only for emulation loop
Changed paths:
M Zend/zend_execute.c
M Zend/zend_vm_execute.h
M Zend/zend_vm_execute.skl
Diff:
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index db9ca22..96d1f61 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -4437,18 +4437,8 @@ static zend_never_inline int ZEND_FASTCALL zend_quick_check_constant(
} \
} while (0)
-#if ZEND_GCC_VERSION >= 4000 && !defined(__clang__)
-# pragma GCC push_options
-# pragma GCC optimize("no-gcse")
-# pragma GCC optimize("no-ivopts")
-#endif
-
#include "zend_vm_execute.h"
-#if ZEND_GCC_VERSION >= 4000 && !defined(__clang__)
-# pragma GCC pop_options
-#endif
-
ZEND_API int zend_set_user_opcode_handler(zend_uchar opcode, user_opcode_handler_t handler)
{
if (opcode != ZEND_USER_OPCODE) {
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 89b36bd..210f488 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -54854,6 +54854,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL
ZEND_NULL_HANDLER(ZEND_OPCODE_HANDL
#endif
+#if (ZEND_VM_KIND != ZEND_VM_KIND_CALL) && (ZEND_GCC_VERSION >= 4000) &&
!defined(__clang__)
+# pragma GCC push_options
+# pragma GCC optimize("no-gcse")
+# pragma GCC optimize("no-ivopts")
+#endif
ZEND_API void execute_ex(zend_execute_data *ex)
{
DCL_OPLINE
@@ -65700,6 +65705,9 @@ zend_leave_helper_SPEC_LABEL:
}
zend_error_noreturn(E_CORE_ERROR, "Arrived at end of main loop which shouldn't
happen");
}
+#if (ZEND_VM_KIND != ZEND_VM_KIND_CALL) && (ZEND_GCC_VERSION >= 4000) &&
!defined(__clang__)
+# pragma GCC pop_options
+#endif
ZEND_API void zend_execute(zend_op_array *op_array, zval *return_value)
{
diff --git a/Zend/zend_vm_execute.skl b/Zend/zend_vm_execute.skl
index 5e6e98b..27aae16 100644
--- a/Zend/zend_vm_execute.skl
+++ b/Zend/zend_vm_execute.skl
@@ -1,5 +1,10 @@
{%DEFINES%}
+#if (ZEND_VM_KIND != ZEND_VM_KIND_CALL) && (ZEND_GCC_VERSION >= 4000) &&
!defined(__clang__)
+# pragma GCC push_options
+# pragma GCC optimize("no-gcse")
+# pragma GCC optimize("no-ivopts")
+#endif
ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data *ex)
{
DCL_OPLINE
@@ -20,6 +25,9 @@ ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data *ex)
}
zend_error_noreturn(E_CORE_ERROR, "Arrived at end of main loop which shouldn't
happen");
}
+#if (ZEND_VM_KIND != ZEND_VM_KIND_CALL) && (ZEND_GCC_VERSION >= 4000) &&
!defined(__clang__)
+# pragma GCC pop_options
+#endif
ZEND_API void zend_{%EXECUTOR_NAME%}(zend_op_array *op_array, zval *return_value)
{