From: Dmitry Stogov Date: Fri, 29 Nov 2019 14:43:36 +0000 (+0300) Subject: Don't keep QM_ASSIGN with IS_UNUSED result X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3360d05f3047c348524b4a04a459001a18ccebd6;p=php Don't keep QM_ASSIGN with IS_UNUSED result --- diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c index b4cd2407ba..b6af541eac 100644 --- a/ext/opcache/Optimizer/block_pass.c +++ b/ext/opcache/Optimizer/block_pass.c @@ -270,6 +270,13 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array src->result_type = IS_UNUSED; MAKE_NOP(opline); ++(*opt_count); + if (src->opcode == ZEND_QM_ASSIGN) { + if (src->op1_type & (IS_VAR|IS_TMP_VAR)) { + src->opcode = ZEND_FREE; + } else { + MAKE_NOP(src); + } + } } } break;