From: Dmitry Stogov Date: Wed, 9 Oct 2019 06:08:25 +0000 (+0300) Subject: Otimize out useless QM_ASSIGN X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=170ed1f5a7b2f2f052445761080c96a3a3cfa884;p=php Otimize out useless QM_ASSIGN --- diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c index 6ca3d02468..4e4d270b62 100644 --- a/ext/opcache/Optimizer/block_pass.c +++ b/ext/opcache/Optimizer/block_pass.c @@ -883,6 +883,18 @@ optimize_const_unary_op: /* strip T = QM_ASSIGN(T) */ MAKE_NOP(opline); ++(*opt_count); + } else if (opline->op1_type == IS_TMP_VAR && + opline->result_type == IS_TMP_VAR && + !zend_bitset_in(used_ext, VAR_NUM(opline->op1.var))) { + /* T1 = ..., T2 = QM_ASSIGN(T1) to T2 = ..., NOP */ + src = VAR_SOURCE(opline->op1); + if (src) { + src->result.var = opline->result.var; + VAR_SOURCE(opline->op1) = NULL; + VAR_SOURCE(opline->result) = src; + MAKE_NOP(opline); + ++(*opt_count); + } } break; }