diff options
Diffstat (limited to 'ext/opcache')
| -rw-r--r-- | ext/opcache/Optimizer/block_pass.c | 3 | ||||
| -rw-r--r-- | ext/opcache/Optimizer/sccp.c | 1 | ||||
| -rw-r--r-- | ext/opcache/Optimizer/zend_inference.c | 3 | ||||
| -rw-r--r-- | ext/opcache/Optimizer/zend_optimizer.c | 1 |
4 files changed, 7 insertions, 1 deletions
diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c index 5aa32bfe03..45fe55b1ed 100644 --- a/ext/opcache/Optimizer/block_pass.c +++ b/ext/opcache/Optimizer/block_pass.c @@ -452,8 +452,9 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array break; case ZEND_CASE: + case ZEND_COPY_TMP: if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) { - /* CASE variable will be deleted later by FREE, so we can't optimize it */ + /* Variable will be deleted later by FREE, so we can't optimize it */ Tsource[VAR_NUM(opline->op1.var)] = NULL; break; } diff --git a/ext/opcache/Optimizer/sccp.c b/ext/opcache/Optimizer/sccp.c index 34e9dcd051..0eb042f5f2 100644 --- a/ext/opcache/Optimizer/sccp.c +++ b/ext/opcache/Optimizer/sccp.c @@ -1680,6 +1680,7 @@ static void sccp_visit_instr(scdf_ctx *scdf, zend_op *opline, zend_ssa_op *ssa_o case ZEND_QM_ASSIGN: case ZEND_JMP_SET: case ZEND_COALESCE: + case ZEND_COPY_TMP: SET_RESULT(result, op1); break; #if 0 diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c index 980f3c5fea..d9e882c5b9 100644 --- a/ext/opcache/Optimizer/zend_inference.c +++ b/ext/opcache/Optimizer/zend_inference.c @@ -1208,6 +1208,7 @@ int zend_inference_calc_range(const zend_op_array *op_array, zend_ssa *ssa, int case ZEND_QM_ASSIGN: case ZEND_JMP_SET: case ZEND_COALESCE: + case ZEND_COPY_TMP: if (ssa->ops[line].op1_def == var) { if (ssa->ops[line].op1_def >= 0) { if (OP1_HAS_RANGE()) { @@ -2554,6 +2555,7 @@ static int zend_update_type_info(const zend_op_array *op_array, case ZEND_QM_ASSIGN: case ZEND_JMP_SET: case ZEND_COALESCE: + case ZEND_COPY_TMP: if (ssa_ops[i].op1_def >= 0) { tmp = t1; if ((t1 & (MAY_BE_RC1|MAY_BE_REF)) && (opline->op1_type == IS_CV)) { @@ -4458,6 +4460,7 @@ int zend_may_throw(const zend_op *opline, zend_op_array *op_array, zend_ssa *ssa case ZEND_ISSET_ISEMPTY_CV: case ZEND_FUNC_NUM_ARGS: case ZEND_FUNC_GET_ARGS: + case ZEND_COPY_TMP: return 0; case ZEND_INIT_FCALL: /* can't throw, because call is resolved at compile time */ diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index 096668ee0f..22868a4c21 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -371,6 +371,7 @@ int zend_optimizer_update_op1_const(zend_op_array *op_array, return 0; case ZEND_CASE: case ZEND_FETCH_LIST_R: + case ZEND_COPY_TMP: return 0; case ZEND_CONCAT: case ZEND_FAST_CONCAT: |
