From 034fe44fb0a71a98a7b62bf32c6fe08a3cc8a7a5 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Fri, 27 Mar 2026 11:30:20 +0000 Subject: [PATCH 1/2] Zend/Optimizer/dfa_pass.c: refactor zend_dfa_optimize_calls() This function is only called within dfa_pass.c, thus make it static Return a uint32_t as the value can never be negative Add some const qualifiers Minor CS adjustment to make if condition easier to read --- Zend/Optimizer/dfa_pass.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Zend/Optimizer/dfa_pass.c b/Zend/Optimizer/dfa_pass.c index 796e998493d76..e7924616def6c 100644 --- a/Zend/Optimizer/dfa_pass.c +++ b/Zend/Optimizer/dfa_pass.c @@ -398,22 +398,22 @@ static bool variable_defined_or_used_in_range(zend_ssa *ssa, int var, int start, return false; } -int zend_dfa_optimize_calls(zend_op_array *op_array, zend_ssa *ssa) +static uint32_t zend_dfa_optimize_calls(zend_op_array *op_array, zend_ssa *ssa) { - zend_func_info *func_info = ZEND_FUNC_INFO(op_array); - int removed_ops = 0; + const zend_func_info *func_info = ZEND_FUNC_INFO(op_array); + uint32_t removed_ops = 0; if (func_info->callee_info) { - zend_call_info *call_info = func_info->callee_info; + const zend_call_info *call_info = func_info->callee_info; do { zend_op *op = call_info->caller_init_opline; - if ((op->opcode == ZEND_FRAMELESS_ICALL_2 - || (op->opcode == ZEND_FRAMELESS_ICALL_3 && (op + 1)->op1_type == IS_CONST)) - && call_info->callee_func - && zend_string_equals_literal_ci(call_info->callee_func->common.function_name, "in_array")) { - + if ( + (op->opcode == ZEND_FRAMELESS_ICALL_2 || (op->opcode == ZEND_FRAMELESS_ICALL_3 && (op + 1)->op1_type == IS_CONST)) + && call_info->callee_func + && zend_string_equals_literal_ci(call_info->callee_func->common.function_name, "in_array") + ) { bool strict = false; bool has_opdata = op->opcode == ZEND_FRAMELESS_ICALL_3; ZEND_ASSERT(!call_info->is_prototype); @@ -428,7 +428,7 @@ int zend_dfa_optimize_calls(zend_op_array *op_array, zend_ssa *ssa) && Z_TYPE_P(CT_CONSTANT_EX(op_array, op->op2.constant)) == IS_ARRAY) { bool ok = true; - HashTable *src = Z_ARRVAL_P(CT_CONSTANT_EX(op_array, op->op2.constant)); + const HashTable *src = Z_ARRVAL_P(CT_CONSTANT_EX(op_array, op->op2.constant)); HashTable *dst; zval *val, tmp; zend_ulong idx; From 7fa38499f4831a96dcc8d956324250df97cac6a4 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Fri, 27 Mar 2026 22:35:37 +0000 Subject: [PATCH 2/2] revert cs --- Zend/Optimizer/dfa_pass.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Zend/Optimizer/dfa_pass.c b/Zend/Optimizer/dfa_pass.c index e7924616def6c..5459d22181740 100644 --- a/Zend/Optimizer/dfa_pass.c +++ b/Zend/Optimizer/dfa_pass.c @@ -409,11 +409,10 @@ static uint32_t zend_dfa_optimize_calls(zend_op_array *op_array, zend_ssa *ssa) do { zend_op *op = call_info->caller_init_opline; - if ( - (op->opcode == ZEND_FRAMELESS_ICALL_2 || (op->opcode == ZEND_FRAMELESS_ICALL_3 && (op + 1)->op1_type == IS_CONST)) - && call_info->callee_func - && zend_string_equals_literal_ci(call_info->callee_func->common.function_name, "in_array") - ) { + if ((op->opcode == ZEND_FRAMELESS_ICALL_2 + || (op->opcode == ZEND_FRAMELESS_ICALL_3 && (op + 1)->op1_type == IS_CONST)) + && call_info->callee_func + && zend_string_equals_literal_ci(call_info->callee_func->common.function_name, "in_array")) { bool strict = false; bool has_opdata = op->opcode == ZEND_FRAMELESS_ICALL_3; ZEND_ASSERT(!call_info->is_prototype);