From: Dmitry Stogov Date: Fri, 13 Sep 2019 09:38:57 +0000 (+0300) Subject: Make constant and copy propagation only for IS_TMP_VAR operands X-Git-Tag: php-7.4.0RC2~35 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=af9b127feda07171bb1bf0b53360efb3ae9cadc0;p=php Make constant and copy propagation only for IS_TMP_VAR operands --- diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c index e699d03d62..3327ec86df 100644 --- a/ext/opcache/Optimizer/block_pass.c +++ b/ext/opcache/Optimizer/block_pass.c @@ -181,7 +181,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array end = opline + block->len; while (opline < end) { /* Constant Propagation: strip X = QM_ASSIGN(const) */ - if ((opline->op1_type & (IS_TMP_VAR|IS_VAR)) && + if (opline->op1_type == IS_TMP_VAR && opline->opcode != ZEND_FREE) { src = VAR_SOURCE(opline->op1); if (src && @@ -257,7 +257,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array } /* Constant Propagation: strip X = QM_ASSIGN(const) */ - if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) { + if (opline->op2_type == IS_TMP_VAR) { src = VAR_SOURCE(opline->op2); if (src && src->opcode == ZEND_QM_ASSIGN && @@ -860,7 +860,7 @@ optimize_const_unary_op: case ZEND_RETURN: case ZEND_EXIT: - if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) { + if (opline->op1_type == IS_TMP_VAR) { src = VAR_SOURCE(opline->op1); if (src && src->opcode == ZEND_QM_ASSIGN) { zend_op *op = src + 1;