Skip to content

Commit 1c596ff

Browse files
committed
Eliminate dead stores
1 parent 186612e commit 1c596ff

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

ext/opcache/jit/zend_jit_trace.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2918,6 +2918,7 @@ static int zend_jit_trace_deoptimization(dasm_State **Dst,
29182918
const zend_op *opline,
29192919
zend_jit_trace_stack *parent_stack,
29202920
int parent_vars_count,
2921+
zend_ssa *ssa,
29212922
zend_jit_trace_stack *stack,
29222923
zend_lifetime_interval **ra)
29232924
{
@@ -2931,7 +2932,9 @@ static int zend_jit_trace_deoptimization(dasm_State **Dst,
29312932

29322933
if (reg != ZREG_NONE) {
29332934
if (reg < ZREG_NUM) {
2934-
if (ra && ra[i] && ra[i]->reg == reg) {
2935+
if (ssa && ssa->vars[i].no_val) {
2936+
/* pass */
2937+
} else if (ra && ra[i] && ra[i]->reg == reg) {
29352938
/* register already loaded by parent trace */
29362939
if (stack) {
29372940
SET_STACK_REG_EX(stack, i, reg, STACK_FLAGS(parent_stack, i));
@@ -2964,7 +2967,9 @@ static int zend_jit_trace_deoptimization(dasm_State **Dst,
29642967

29652968
if (reg != ZREG_NONE) {
29662969
if (reg < ZREG_NUM) {
2967-
if (ra && ra[i] && ra[i]->reg == reg) {
2970+
if (ssa && ssa->vars[i].no_val) {
2971+
/* pass */
2972+
} else if (ra && ra[i] && ra[i]->reg == reg) {
29682973
uint8_t type = STACK_TYPE(parent_stack, i);
29692974

29702975
if (stack) {
@@ -3336,7 +3341,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
33363341
if (!zend_jit_trace_deoptimization(&dasm_state,
33373342
zend_jit_traces[parent_trace].exit_info[exit_num].flags,
33383343
zend_jit_traces[parent_trace].exit_info[exit_num].opline,
3339-
parent_stack, parent_vars_count, stack, ra)) {
3344+
parent_stack, parent_vars_count, ssa, stack, ra)) {
33403345
goto jit_failure;
33413346
}
33423347
}
@@ -5746,7 +5751,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
57465751
} else if (p->stop == ZEND_JIT_TRACE_STOP_LINK
57475752
|| p->stop == ZEND_JIT_TRACE_STOP_INTERPRETER) {
57485753
if (!zend_jit_trace_deoptimization(&dasm_state, 0, NULL,
5749-
stack, op_array->last_var + op_array->T, NULL, NULL)) {
5754+
stack, op_array->last_var + op_array->T, NULL, NULL, NULL)) {
57505755
goto jit_failure;
57515756
}
57525757
if (p->stop == ZEND_JIT_TRACE_STOP_LINK) {
@@ -5910,7 +5915,7 @@ static const void *zend_jit_trace_exit_to_vm(uint32_t trace_num, uint32_t exit_n
59105915
if (!zend_jit_trace_deoptimization(&dasm_state,
59115916
zend_jit_traces[trace_num].exit_info[exit_num].flags,
59125917
zend_jit_traces[trace_num].exit_info[exit_num].opline,
5913-
stack, stack_size, NULL, NULL)) {
5918+
stack, stack_size, NULL, NULL, NULL)) {
59145919
goto jit_failure;
59155920
}
59165921

0 commit comments

Comments
 (0)