summaryrefslogtreecommitdiff
path: root/ext/opcache/Optimizer/block_pass.c
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2013-09-26 18:39:17 +0200
committerNikita Popov <nikic@php.net>2013-09-26 18:39:17 +0200
commit0d7a6388663b76ebed6585ac92dfca5ef65fa7af (patch)
tree1317a8a47c0e4bd1193c8fbf705d91ae75140f78 /ext/opcache/Optimizer/block_pass.c
parent6daa04a4f606f8121d9f1ea6cd90c1c8a684500e (diff)
downloadphp-git-0d7a6388663b76ebed6585ac92dfca5ef65fa7af.tar.gz
Implement variadic function syntax
As per RFC: https://wiki.php.net/rfc/variadics
Diffstat (limited to 'ext/opcache/Optimizer/block_pass.c')
-rw-r--r--ext/opcache/Optimizer/block_pass.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c
index 1c34cffbf7..a4e661e3f8 100644
--- a/ext/opcache/Optimizer/block_pass.c
+++ b/ext/opcache/Optimizer/block_pass.c
@@ -1899,7 +1899,7 @@ next_target_znz:
#endif
/* Find a set of variables which are used outside of the block where they are
- * defined. We won't apply some optimization patterns for sush variables. */
+ * defined. We won't apply some optimization patterns for such variables. */
static void zend_t_usage(zend_code_block *block, zend_op_array *op_array, char *used_ext)
{
zend_code_block *next_block = block->next;
@@ -1931,6 +1931,7 @@ static void zend_t_usage(zend_code_block *block, zend_op_array *op_array, char *
if (RESULT_USED(opline)) {
if (!defined_here[VAR_NUM(ZEND_RESULT(opline).var)] && !used_ext[VAR_NUM(ZEND_RESULT(opline).var)] &&
(opline->opcode == ZEND_RECV || opline->opcode == ZEND_RECV_INIT ||
+ opline->opcode == ZEND_RECV_VARIADIC ||
(opline->opcode == ZEND_OP_DATA && ZEND_RESULT_TYPE(opline) == IS_TMP_VAR) ||
opline->opcode == ZEND_ADD_ARRAY_ELEMENT)) {
/* these opcodes use the result as argument */
@@ -2015,6 +2016,7 @@ static void zend_t_usage(zend_code_block *block, zend_op_array *op_array, char *
if (opline->opcode == ZEND_RECV ||
opline->opcode == ZEND_RECV_INIT ||
+ opline->opcode == ZEND_RECV_VARIADIC ||
opline->opcode == ZEND_ADD_ARRAY_ELEMENT) {
if (ZEND_OP1_TYPE(opline) == IS_VAR || ZEND_OP1_TYPE(opline) == IS_TMP_VAR) {
usage[VAR_NUM(ZEND_RESULT(opline).var)] = 1;