From 0866208988a6de520070d76d88f6e5cf158c6a3b Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Fri, 28 Aug 2020 00:02:10 +0300 Subject: [PATCH] Remove useless register allocations --- ext/opcache/jit/zend_jit_trace.c | 7 +++++++ 1 file changed, 7 insertions(+) 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) { -- 2.40.0