mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Remove special UNREACHABLE_FREE handling in block pass
This results in an assertion failure when running under -e, because there is an additional EXT_STMT + NOP before the FREE. I don't think there's a strong reason to handle UNREACHABLE_FREE specially here (it's only important that we *do* handle it), so I'm dropping the code rather than adjusting it to scan over certain opcodes.
This commit is contained in:
parent
9f263411eb
commit
b97a080034
1 changed files with 0 additions and 8 deletions
|
@ -967,14 +967,6 @@ static void assemble_code_blocks(zend_cfg *cfg, zend_op_array *op_array, zend_op
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (b->flags & (ZEND_BB_REACHABLE|ZEND_BB_UNREACHABLE_FREE)) {
|
if (b->flags & (ZEND_BB_REACHABLE|ZEND_BB_UNREACHABLE_FREE)) {
|
||||||
if (b->flags & ZEND_BB_UNREACHABLE_FREE) {
|
|
||||||
/* Only keep the FREE for the loop var */
|
|
||||||
ZEND_ASSERT(op_array->opcodes[b->start].opcode == ZEND_FREE
|
|
||||||
|| op_array->opcodes[b->start].opcode == ZEND_FE_FREE);
|
|
||||||
len += b->len = 1;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
opline = op_array->opcodes + b->start + b->len - 1;
|
opline = op_array->opcodes + b->start + b->len - 1;
|
||||||
if (opline->opcode == ZEND_JMP) {
|
if (opline->opcode == ZEND_JMP) {
|
||||||
zend_basic_block *next = b + 1;
|
zend_basic_block *next = b + 1;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue