summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/opcache/Optimizer/zend_optimizer.c6
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);