mirror of
https://github.com/php/php-src.git
synced 2024-09-23 02:47:26 +00:00
Don't remove CONST CAST in CONCAT operand
CONCAT assumes that CONST operands are strings, so we cannot blindly remove CAST operands.
This commit is contained in:
parent
1b998bb9cb
commit
105a04aaac
@ -719,7 +719,8 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array
|
||||
src = VAR_SOURCE(opline->op1);
|
||||
if (src &&
|
||||
src->opcode == ZEND_CAST &&
|
||||
src->extended_value == IS_STRING) {
|
||||
src->extended_value == IS_STRING &&
|
||||
src->op1_type != IS_CONST) {
|
||||
/* convert T1 = CAST(STRING, X), T2 = CONCAT(T1, Y) to T2 = CONCAT(X,Y) */
|
||||
VAR_SOURCE(opline->op1) = NULL;
|
||||
COPY_NODE(opline->op1, src->op1);
|
||||
@ -731,7 +732,8 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array
|
||||
src = VAR_SOURCE(opline->op2);
|
||||
if (src &&
|
||||
src->opcode == ZEND_CAST &&
|
||||
src->extended_value == IS_STRING) {
|
||||
src->extended_value == IS_STRING &&
|
||||
src->op1_type != IS_CONST) {
|
||||
/* convert T1 = CAST(STRING, X), T2 = CONCAT(Y, T1) to T2 = CONCAT(Y,X) */
|
||||
zend_op *src = VAR_SOURCE(opline->op2);
|
||||
VAR_SOURCE(opline->op2) = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user