summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-09-18 14:56:55 +0300
committerDmitry Stogov <dmitry@zend.com>2017-09-18 14:56:55 +0300
commitf63bfea105cd2d1285a1189c197d8371cad5f403 (patch)
tree00a120cc44972825887c4404368623ad7a0c183f
parent8109ebbd053281f4cdb13960eac9bd9595442577 (diff)
downloadphp-git-f63bfea105cd2d1285a1189c197d8371cad5f403.tar.gz
Optimize POST_INC_OBJ + FREE into PRE_INC_OBJ (in the same way as simple POST_INC)
-rw-r--r--ext/opcache/Optimizer/block_pass.c2
-rw-r--r--ext/opcache/Optimizer/pass3.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c
index 738e283806..8d99418efd 100644
--- a/ext/opcache/Optimizer/block_pass.c
+++ b/ext/opcache/Optimizer/block_pass.c
@@ -1750,6 +1750,8 @@ static void zend_t_usage(zend_cfg *cfg, zend_op_array *op_array, zend_bitset use
switch (opline->opcode) {
case ZEND_POST_INC:
case ZEND_POST_DEC:
+ case ZEND_POST_INC_OBJ:
+ case ZEND_POST_DEC_OBJ:
opline->opcode -= 2;
opline->result_type = IS_UNUSED;
break;
diff --git a/ext/opcache/Optimizer/pass3.c b/ext/opcache/Optimizer/pass3.c
index 975a9ebebb..0461ed9434 100644
--- a/ext/opcache/Optimizer/pass3.c
+++ b/ext/opcache/Optimizer/pass3.c
@@ -427,6 +427,8 @@ continue_jmpznz_optimization:
}
break;
+ case ZEND_POST_INC_OBJ:
+ case ZEND_POST_DEC_OBJ:
case ZEND_POST_INC:
case ZEND_POST_DEC: {
/* POST_INC, FREE => PRE_INC */