Merge branch 'PHP-8.0' into PHP-8.1

* PHP-8.0:
  Handle SWITCH_STRING with optimized away FREE
This commit is contained in:
Nikita Popov 2021-09-16 11:33:08 +02:00
commit 7879544022
2 changed files with 17 additions and 2 deletions

View File

@ -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

View 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===