mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Merge branch 'PHP-8.0' into PHP-8.1
* PHP-8.0: Handle SWITCH_STRING with optimized away FREE
This commit is contained in:
commit
7879544022
@ -829,13 +829,13 @@ static bool keeps_op1_alive(zend_op *opline) {
|
||||
if (opline->opcode == ZEND_CASE
|
||||
|| opline->opcode == ZEND_CASE_STRICT
|
||||
|| opline->opcode == ZEND_SWITCH_LONG
|
||||
|| opline->opcode == ZEND_SWITCH_STRING
|
||||
|| opline->opcode == ZEND_MATCH
|
||||
|| opline->opcode == ZEND_FETCH_LIST_R
|
||||
|| opline->opcode == ZEND_COPY_TMP) {
|
||||
return 1;
|
||||
}
|
||||
ZEND_ASSERT(opline->opcode != ZEND_SWITCH_STRING
|
||||
&& opline->opcode != ZEND_FE_FETCH_R
|
||||
ZEND_ASSERT(opline->opcode != ZEND_FE_FETCH_R
|
||||
&& opline->opcode != ZEND_FE_FETCH_RW
|
||||
&& opline->opcode != ZEND_FETCH_LIST_W
|
||||
&& opline->opcode != ZEND_VERIFY_RETURN_TYPE
|
||||
|
15
ext/opcache/tests/switch_string_free_opt.phpt
Normal file
15
ext/opcache/tests/switch_string_free_opt.phpt
Normal file
@ -0,0 +1,15 @@
|
||||
--TEST--
|
||||
A SWITCH_STRING operand FREE may be optimized away
|
||||
--FILE--
|
||||
<?php
|
||||
function test($a) {
|
||||
switch (!$a) {
|
||||
case '':
|
||||
r>l;
|
||||
default:
|
||||
}
|
||||
}
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
===DONE===
|
Loading…
Reference in New Issue
Block a user