Skip to content

Commit 8cb1ae9

Browse files
committed
Use SSA instead of bogus reverse linear scan.
1 parent 960f922 commit 8cb1ae9

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

ext/opcache/Optimizer/scdf.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,12 @@ static zend_bool kept_alive_by_loop_var_free(scdf_ctx *scdf, uint32_t block_idx)
193193
zend_op *opline = &op_array->opcodes[i];
194194
if (opline->opcode == ZEND_FE_FREE ||
195195
(opline->opcode == ZEND_FREE && opline->extended_value == ZEND_FREE_SWITCH)) {
196-
zend_op *def_opline = zend_optimizer_get_loop_var_def(op_array, opline);
197-
if (def_opline) {
198-
uint32_t def_block = cfg->map[def_opline - op_array->opcodes];
196+
int ssa_var = scdf->ssa->ops[i].op1_use;
197+
if (ssa_var >= 0) {
198+
int op_num = scdf->ssa->vars[ssa_var].definition;
199+
uint32_t def_block;
200+
ZEND_ASSERT(op_num >= 0);
201+
def_block = cfg->map[op_num];
199202
if (zend_bitset_in(scdf->executable_blocks, def_block)) {
200203
return 1;
201204
}

0 commit comments

Comments
 (0)