com php-src: Convert ASSIGN_ADD $a, $b into $ a = ADD $a, $b, if possible.: ext/o pcache/Optimizer/dfa_pass.c

From: Date: Tue, 22 Mar 2016 20:57:26 +0000
Subject: com php-src: Convert ASSIGN_ADD $a, $b into $ a = ADD $a, $b, if possible.: ext/o pcache/Optimizer/dfa_pass.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-91462@lists.php.net to get a copy of this message
Commit: d8b75b0807a5d94bd7b6b175d56aba8bc5be8d7a Author: Dmitry Stogov <dmitry@zend.com> Tue, 22 Mar 2016 23:57:26 +0300 Parents: 76d612129bb6b67171308f43c19d7e4791d7919e Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=d8b75b0807a5d94bd7b6b175d56aba8bc5be8d7a Log: Convert ASSIGN_ADD $a, $b into $a = ADD $a, $b, if possible. Changed paths: M ext/opcache/Optimizer/dfa_pass.c Diff: diff --git a/ext/opcache/Optimizer/dfa_pass.c b/ext/opcache/Optimizer/dfa_pass.c index c4d2535..12a83f0 100644 --- a/ext/opcache/Optimizer/dfa_pass.c +++ b/ext/opcache/Optimizer/dfa_pass.c @@ -431,6 +431,31 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx op_array->opcodes[op2].opcode = ZEND_PRE_DEC; SET_UNUSED(op_array->opcodes[op2].op2); + } else if (ssa->ops[op2].op1_def == i + && !RETURN_VALUE_USED(&op_array->opcodes[op2]) + && ssa->ops[op2].op1_use >= 0 + && !(ssa->var_info[ssa->ops[op2].op1_use].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF)) + && (op_array->opcodes[op2].opcode == ZEND_ASSIGN_ADD + || op_array->opcodes[op2].opcode == ZEND_ASSIGN_SUB + || op_array->opcodes[op2].opcode == ZEND_ASSIGN_MUL + || op_array->opcodes[op2].opcode == ZEND_ASSIGN_DIV + || op_array->opcodes[op2].opcode == ZEND_ASSIGN_MOD + || op_array->opcodes[op2].opcode == ZEND_ASSIGN_SL + || op_array->opcodes[op2].opcode == ZEND_ASSIGN_SR + || op_array->opcodes[op2].opcode == ZEND_ASSIGN_BW_OR + || op_array->opcodes[op2].opcode == ZEND_ASSIGN_BW_AND + || op_array->opcodes[op2].opcode == ZEND_ASSIGN_BW_XOR) + && op_array->opcodes[op2].extended_value == 0) { + + /* Reconstruct SSA */ + ssa->ops[op2].result_def = ssa->ops[op2].op1_def; + ssa->ops[op2].op1_def = -1; + + /* Update opcode */ + op_array->opcodes[op2].opcode -= (ZEND_ASSIGN_ADD - ZEND_ADD); + op_array->opcodes[op2].result_type = op_array->opcodes[op2].op1_type; + op_array->opcodes[op2].result.var = op_array->opcodes[op2].op1.var; + } } if (remove_nops) {

« previous php.cvs (#91462) next »