1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Merge branch 'PHP-8.1' into PHP-8.2

* PHP-8.1:
  Fixed incorrect QM_ASSIGN elimination
This commit is contained in:
Dmitry Stogov
2023-07-31 14:51:06 +03:00
2 changed files with 19 additions and 1 deletions

View File

@@ -174,7 +174,8 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array
&& opline->opcode != ZEND_MATCH
&& zend_optimizer_update_op1_const(op_array, opline, &c)) {
VAR_SOURCE(op1) = NULL;
if (!zend_bitset_in(used_ext, VAR_NUM(src->result.var))) {
if (opline->opcode != ZEND_JMP_NULL
&& !zend_bitset_in(used_ext, VAR_NUM(src->result.var))) {
literal_dtor(&ZEND_OP1_LITERAL(src));
MAKE_NOP(src);
}

View File

@@ -0,0 +1,17 @@
--TEST--
Block Pass 005: Inorrect QM_ASSIGN elimination
--INI--
opcache.enable=1
opcache.enable_cli=1
opcache.optimization_level=-1
--EXTENSIONS--
opcache
--FILE--
<?php
y??(1?4:y)?->y;
?>
--EXPECTF--
Fatal error: Uncaught Error: Undefined constant "y" in %sblock_pass_005.php:2
Stack trace:
#0 {main}
thrown in %sblock_pass_005.php on line 2