summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2020-10-21 16:05:13 +0300
committerDmitry Stogov <dmitry@zend.com>2020-10-21 16:05:13 +0300
commitcb6f9a65681bedee18fbd994495ddf3ba41367ac (patch)
tree50a92606f8d459624b76e0863f8091f33c54f61a
parent9efb258fc16d911f54f116358c5cf9f42d02dcd4 (diff)
downloadphp-git-cb6f9a65681bedee18fbd994495ddf3ba41367ac.tar.gz
More accurate live range construction
-rw-r--r--ext/opcache/jit/zend_jit_trace.c4
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 {