summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2020-08-28 00:02:10 +0300
committerDmitry Stogov <dmitry@zend.com>2020-08-28 00:02:10 +0300
commit0866208988a6de520070d76d88f6e5cf158c6a3b (patch)
treed4918899ba3e83b9fd6072797ed4b41d144ee1f8
parent972041d68dcffcbc6c896f3420d4e9473c8d0158 (diff)
downloadphp-git-0866208988a6de520070d76d88f6e5cf158c6a3b.tar.gz
Remove useless register allocations
-rw-r--r--ext/opcache/jit/zend_jit_trace.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/ext/opcache/jit/zend_jit_trace.c b/ext/opcache/jit/zend_jit_trace.c
index e549ba7ece..5e4a6f4d1f 100644
--- a/ext/opcache/jit/zend_jit_trace.c
+++ b/ext/opcache/jit/zend_jit_trace.c
@@ -2633,6 +2633,13 @@ static zend_lifetime_interval** zend_jit_trace_allocate_registers(zend_jit_trace
if (intervals[def]) {
if (!intervals[use]) {
intervals[def]->flags |= ZREG_LOAD;
+ if ((intervals[def]->flags & ZREG_LAST_USE)
+ && ssa->vars[def].use_chain >= 0
+ && ssa->vars[def].use_chain == intervals[def]->range.end) {
+ /* remove interval used once */
+ intervals[def] = NULL;
+ count--;
+ }
} else if (intervals[def]->reg != intervals[use]->reg) {
intervals[def]->flags |= ZREG_LOAD;
if (ssa->vars[use].use_chain >= 0) {