mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
Merge branch 'PHP-8.0' into PHP-8.1
* PHP-8.0: JIT: Fix register allocation
This commit is contained in:
commit
afbb9b9a1b
@ -170,8 +170,8 @@ static bool zend_ssa_is_last_use(const zend_op_array *op_array, const zend_ssa *
|
||||
} while (phi);
|
||||
}
|
||||
|
||||
next_use = zend_ssa_next_use(ssa->ops, var, use);
|
||||
if (next_use < 0) {
|
||||
if (ssa->cfg.blocks[ssa->cfg.map[use]].loop_header > 0
|
||||
|| (ssa->cfg.blocks[ssa->cfg.map[use]].flags & ZEND_BB_LOOP_HEADER)) {
|
||||
int b = ssa->cfg.map[use];
|
||||
int prev_use = ssa->vars[var].use_chain;
|
||||
|
||||
@ -183,6 +183,10 @@ static bool zend_ssa_is_last_use(const zend_op_array *op_array, const zend_ssa *
|
||||
}
|
||||
prev_use = zend_ssa_next_use(ssa->ops, var, prev_use);
|
||||
}
|
||||
}
|
||||
|
||||
next_use = zend_ssa_next_use(ssa->ops, var, use);
|
||||
if (next_use < 0) {
|
||||
return 1;
|
||||
} else if (zend_ssa_is_no_val_use(op_array->opcodes + next_use, ssa->ops + next_use, var)) {
|
||||
return 1;
|
||||
|
24
ext/opcache/tests/jit/reg_alloc_010.phpt
Normal file
24
ext/opcache/tests/jit/reg_alloc_010.phpt
Normal file
@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Register Alloction 010: Missed store
|
||||
--INI--
|
||||
opcache.enable=1
|
||||
opcache.enable_cli=1
|
||||
opcache.file_update_protection=0
|
||||
opcache.jit_buffer_size=1M
|
||||
--FILE--
|
||||
<?php
|
||||
function foo($y) {
|
||||
for (; $cnt < 6; $cnt++) {
|
||||
for ($i=0; $i <.1; $i++)
|
||||
for(;$y;);
|
||||
[$i=$y];
|
||||
}
|
||||
}
|
||||
foo(null);
|
||||
?>
|
||||
DONE
|
||||
--EXPECTF--
|
||||
Warning: Undefined variable $cnt in %sreg_alloc_010.php on line 3
|
||||
|
||||
Warning: Undefined variable $cnt in %sreg_alloc_010.php on line 3
|
||||
DONE
|
Loading…
Reference in New Issue
Block a user