diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/opcache/Optimizer/zend_optimizer.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index bd859eaee6..0c9eac1d78 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -319,6 +319,9 @@ int zend_optimizer_update_op1_const(zend_op_array *op_array, case ZEND_FETCH_UNSET: case ZEND_FETCH_FUNC_ARG: TO_STRING_NOWARN(val); + if (opline->opcode == ZEND_CONCAT && opline->op2_type == IS_CONST) { + opline->opcode == ZEND_FAST_CONCAT; + } /* break missing intentionally */ default: opline->op1.constant = zend_optimizer_add_literal(op_array, val); @@ -468,6 +471,9 @@ int zend_optimizer_update_op2_const(zend_op_array *op_array, case ZEND_CONCAT: case ZEND_FAST_CONCAT: TO_STRING_NOWARN(val); + if (opline->opcode == ZEND_CONCAT && opline->op1_type == IS_CONST) { + opline->opcode == ZEND_FAST_CONCAT; + } /* break missing intentionally */ default: opline->op2.constant = zend_optimizer_add_literal(op_array, val); |
