From 75bd92a60928818358686410deec24a48e05d6da Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Fri, 14 Jul 2017 12:39:05 +0300 Subject: [PATCH] Fixed use-def chain unlinking for "$a = 1; $a += $a;" --- ext/opcache/Optimizer/sccp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ext/opcache/Optimizer/sccp.c b/ext/opcache/Optimizer/sccp.c index 5222c2a8627..0e52350c189 100644 --- a/ext/opcache/Optimizer/sccp.c +++ b/ext/opcache/Optimizer/sccp.c @@ -1367,7 +1367,9 @@ static int replace_constant_operands(sccp_ctx *ctx) { if (opline->op2_type == IS_CONST) { literal_dtor(&ZEND_OP2_LITERAL(opline)); } else if (ssa_op->op2_use >= 0) { - zend_ssa_unlink_use_chain(ssa, var->definition, ssa_op->op2_use); + if (ssa_op->op2_use != ssa_op->op1_use) { + zend_ssa_unlink_use_chain(ssa, var->definition, ssa_op->op2_use); + } ssa_op->op2_use = -1; ssa_op->op2_use_chain = -1; }