From 6694ecdb9df37415b9fd32046eb5d3157f67c263 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Mon, 14 Dec 2015 23:40:28 +0100 Subject: [PATCH] Fix live_range updates on ZEND(_FE)_FREE opcodes in block_pass --- ext/opcache/Optimizer/block_pass.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c index b240254ab9..47d5166810 100644 --- a/ext/opcache/Optimizer/block_pass.c +++ b/ext/opcache/Optimizer/block_pass.c @@ -955,8 +955,8 @@ static void assemble_code_blocks(zend_cfg *cfg, zend_op_array *op_array) op_array->last_live_range = j; while (opline != end) { if ((opline->opcode == ZEND_FREE || opline->opcode == ZEND_FE_FREE) && - opline->extended_value == ZEND_FREE_ON_RETURN && - opline->op2.num < (uint32_t)j) { + opline->extended_value == ZEND_FREE_ON_RETURN) { + ZEND_ASSERT(opline->op2.num < (uint32_t) i); opline->op2.num = map[opline->op2.num]; } opline++; @@ -982,7 +982,7 @@ static void assemble_code_blocks(zend_cfg *cfg, zend_op_array *op_array) *opline_num = -1; } - /* rebild map (judt for printing) */ + /* rebild map (just for printing) */ memset(cfg->map, -1, sizeof(int) * op_array->last); for (n = 0; n < cfg->blocks_count; n++) { if (cfg->blocks[n].flags & ZEND_BB_REACHABLE) { -- 2.50.1