com php-src: Optimize CASE(TRUE, X) into BOOL(X) (this pattern affects wordpress): ext/opcache/Optimizer/block_pass.c

From: Date: Thu, 17 Apr 2014 17:15:02 +0000
Subject: com php-src: Optimize CASE(TRUE, X) into BOOL(X) (this pattern affects wordpress): ext/opcache/Optimizer/block_pass.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-77352@lists.php.net to get a copy of this message
Commit: 3434d3fc98881ee5cd45b2b57afc789fd69b810b Author: Dmitry Stogov <dmitry@zend.com> Thu, 17 Apr 2014 21:15:02 +0400 Parents: e7b3b1132a56a227d9d323e6a2d912a9e3f6109e Branches: phpng Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=3434d3fc98881ee5cd45b2b57afc789fd69b810b Log: Optimize CASE(TRUE, X) into BOOL(X) (this pattern affects wordpress) Changed paths: M ext/opcache/Optimizer/block_pass.c Diff: diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c index 708bdd4..2260af8 100644 --- a/ext/opcache/Optimizer/block_pass.c +++ b/ext/opcache/Optimizer/block_pass.c @@ -785,20 +785,23 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array, * IS_EQ(FALSE, X) => BOOL_NOT(X) * IS_NOT_EQ(TRUE, X) => BOOL_NOT(X) * IS_NOT_EQ(FALSE, X) => BOOL(X) + * CASE(TRUE, X) => BOOL(X) + * CASE(FALSE, X) => BOOL_NOT(X) */ if (opline->opcode == ZEND_IS_EQUAL || - opline->opcode == ZEND_IS_NOT_EQUAL) { + opline->opcode == ZEND_IS_NOT_EQUAL || + opline->opcode == ZEND_CASE) { if (ZEND_OP1_TYPE(opline) == IS_CONST && Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_BOOL) { opline->opcode = - ((opline->opcode == ZEND_IS_EQUAL) == Z_LVAL(ZEND_OP1_LITERAL(opline)))? + ((opline->opcode != ZEND_IS_NOT_EQUAL) == Z_LVAL(ZEND_OP1_LITERAL(opline)))? ZEND_BOOL : ZEND_BOOL_NOT; COPY_NODE(opline->op1, opline->op2); SET_UNUSED(opline->op2); } else if (ZEND_OP2_TYPE(opline) == IS_CONST && Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_BOOL) { opline->opcode = - ((opline->opcode == ZEND_IS_EQUAL) == Z_LVAL(ZEND_OP2_LITERAL(opline)))? + ((opline->opcode != ZEND_IS_NOT_EQUAL) == Z_LVAL(ZEND_OP2_LITERAL(opline)))? ZEND_BOOL : ZEND_BOOL_NOT; SET_UNUSED(opline->op2); }

« previous php.cvs (#77352) next »