[php-src] PHP-8.4: JIT: Fix operand type check in zend_redo_pass_two_ex() (#24658)

From: Date: Sat, 24 Oct 2026 17:48:08 +0000
Subject: [php-src] PHP-8.4: JIT: Fix operand type check in zend_redo_pass_two_ex() (#24658)
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-142690@lists.php.net to get a copy of this message
Author: Weilin Du (LamentXU123) Committer: GitHub (web-flow) Pusher: LamentXU123 Date: 2026-10-25T01:48:05+08:00 Commit: https://github.com/php/php-src/commit/755f9d9a2bed685fe1241fe034a6a66f8c072802 Raw diff: https://github.com/php/php-src/commit/755f9d9a2bed685fe1241fe034a6a66f8c072802.diff JIT: Fix operand type check in zend_redo_pass_two_ex() (#24658) op2_info should depend on opline->op2_type and has nothing to do with opline->op1_type. Changed paths: M Zend/Optimizer/zend_optimizer.c Diff: diff --git a/Zend/Optimizer/zend_optimizer.c b/Zend/Optimizer/zend_optimizer.c index 9017572118e2..77af67fe6d73 100644 --- a/Zend/Optimizer/zend_optimizer.c +++ b/Zend/Optimizer/zend_optimizer.c @@ -1359,7 +1359,7 @@ static void zend_redo_pass_two_ex(zend_op_array *op_array, zend_ssa *ssa) while (opline < end) { zend_ssa_op *ssa_op = &ssa->ops[opline - op_array->opcodes]; uint32_t op1_info = opline->op1_type == IS_UNUSED ? 0 : (OP1_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)); - uint32_t op2_info = opline->op1_type == IS_UNUSED ? 0 : (OP2_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)); + uint32_t op2_info = opline->op2_type == IS_UNUSED ? 0 : (OP2_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)); uint32_t res_info = (opline->opcode == ZEND_PRE_INC || opline->opcode == ZEND_PRE_DEC ||

« previous php.cvs (#142690) next »