Skip to content

Commit 6fc26a5

Browse files
committed
Merge branch 'PHP-8.1'
* PHP-8.1: Tracing JIT: Fixed incorrect deoptimization info Tracing JIT: Fixed incorrect deoptimization info
2 parents 354c52e + 55f1db6 commit 6fc26a5

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

ext/opcache/jit/zend_jit_trace.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4168,7 +4168,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
41684168
}
41694169
info &= ~MAY_BE_GUARD;
41704170
ssa->var_info[phi->ssa_var].type = info;
4171-
SET_STACK_TYPE(stack, i, concrete_type(info), 1);
4171+
SET_STACK_TYPE(stack, phi->var, concrete_type(info), 1);
41724172
}
41734173
SET_STACK_REG_EX(stack, phi->var, ival->reg, ZREG_LOAD);
41744174
if (!zend_jit_load_var(&dasm_state, ssa->var_info[phi->ssa_var].type, ssa->vars[phi->ssa_var].var, ival->reg)) {
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
Register Alloction 008: Incorrect deoptimization code
3+
--INI--
4+
opcache.enable=1
5+
opcache.enable_cli=1
6+
opcache.file_update_protection=0
7+
opcache.jit_buffer_size=1M
8+
--FILE--
9+
<?php
10+
function foo($a) {
11+
for($i=0; $i<1; $i++)
12+
$a=$y / $a = $a + $a != ($a);
13+
}
14+
foo(7);
15+
?>
16+
--EXPECTF--
17+
Warning: Undefined variable $y in %sreg_alloc_008.php on line 4

0 commit comments

Comments
 (0)