From: Dmitry Stogov Date: Wed, 21 Oct 2020 13:05:13 +0000 (+0300) Subject: More accurate live range construction X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cb6f9a65681bedee18fbd994495ddf3ba41367ac;p=php More accurate live range construction --- diff --git a/ext/opcache/jit/zend_jit_trace.c b/ext/opcache/jit/zend_jit_trace.c index 2353ec0a93..6e2015f158 100644 --- a/ext/opcache/jit/zend_jit_trace.c +++ b/ext/opcache/jit/zend_jit_trace.c @@ -2476,7 +2476,7 @@ static zend_lifetime_interval** zend_jit_trace_allocate_registers(zend_jit_trace while (phi) { i = phi->sources[1]; - if (start[i] >= 0) { + if (start[i] >= 0 && !ssa->vars[phi->ssa_var].no_val) { end[i] = idx; flags[i] &= ~ZREG_LAST_USE; } @@ -2487,6 +2487,8 @@ static zend_lifetime_interval** zend_jit_trace_allocate_registers(zend_jit_trace if (start[i] >= 0 && !ssa->vars[i].phi_use_chain) { end[i] = idx; flags[i] &= ~ZREG_LAST_USE; + } else { + zend_jit_close_var(stack, i, start, end, flags, idx); } } } else {