diff options
author | Dmitry Stogov <dmitry@zend.com> | 2020-10-21 16:05:13 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2020-10-21 16:05:13 +0300 |
commit | cb6f9a65681bedee18fbd994495ddf3ba41367ac (patch) | |
tree | 50a92606f8d459624b76e0863f8091f33c54f61a | |
parent | 9efb258fc16d911f54f116358c5cf9f42d02dcd4 (diff) | |
download | php-git-cb6f9a65681bedee18fbd994495ddf3ba41367ac.tar.gz |
More accurate live range construction
-rw-r--r-- | ext/opcache/jit/zend_jit_trace.c | 4 |
1 files changed, 3 insertions, 1 deletions
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 { |