From: Dmitry Stogov Date: Thu, 30 Jun 2016 17:48:16 +0000 (+0300) Subject: Fixed incorrect constant propagation X-Git-Tag: php-7.1.0alpha3~53 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5ae07dc34ac7582c6ea5fdc5f24129a05ac9c78a;p=php Fixed incorrect constant propagation --- diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index 43b355ee3c..f1c62ddd65 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -195,12 +195,9 @@ int zend_optimizer_update_op1_const(zend_op_array *op_array, opline->opcode = ZEND_SEND_VAL; opline->op1.constant = zend_optimizer_add_literal(op_array, val); break; - case ZEND_SEND_VAR_NO_REF_EX: - opline->opcode = ZEND_SEND_VAL_EX; - opline->op1.constant = zend_optimizer_add_literal(op_array, val); - break; case ZEND_SEPARATE: case ZEND_SEND_VAR_NO_REF: + case ZEND_SEND_VAR_NO_REF_EX: zval_ptr_dtor(val); return 0; case ZEND_CONCAT: diff --git a/ext/opcache/tests/wrong_inlining_001.phpt b/ext/opcache/tests/wrong_inlining_001.phpt new file mode 100644 index 0000000000..5cc515c4af --- /dev/null +++ b/ext/opcache/tests/wrong_inlining_001.phpt @@ -0,0 +1,28 @@ +--TEST-- +Pass result of inlined function by reference +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +--SKIPIF-- + +--FILE-- + +OK +--EXPECTF-- +Notice: Only variables should be passed by reference in %swrong_inlining_001.php on line 7 +OK \ No newline at end of file