]> granicus.if.org Git - php/commitdiff
Disable "bad" optimisations only for emulation loop
authorDmitry Stogov <dmitry@zend.com>
Thu, 30 May 2019 17:35:30 +0000 (20:35 +0300)
committerDmitry Stogov <dmitry@zend.com>
Thu, 30 May 2019 17:35:30 +0000 (20:35 +0300)
Zend/zend_execute.c
Zend/zend_vm_execute.h
Zend/zend_vm_execute.skl

index db9ca2286016c0902d032636787a1bc00a387379..96d1f614e33997d28bb03bc2ffd11d8b35a6025d 100644 (file)
@@ -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) {
index 89b36bde88e689bf7a2a86c28cdcce8c6fbdf7b9..210f488de2c6665c8b4804415eafd7193196bad8 100644 (file)
@@ -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)
 {
index 5e6e98bb24e76ba7d19b938c3e1193772e2837ec..27aae163913ab2554e7e07692e096ae7a5c8792d 100644 (file)
@@ -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)
 {