diff options
Diffstat (limited to 'Zend/zend_opcode.c')
-rw-r--r-- | Zend/zend_opcode.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index ae2b4bf353..64ba6562ff 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -991,7 +991,11 @@ static zend_always_inline uint32_t *generate_var_liveliness_info_ex(zend_op_arra && opline->opcode != ZEND_FETCH_LIST && opline->opcode != ZEND_CASE && opline->opcode != ZEND_FE_FETCH_R - && opline->opcode != ZEND_FE_FETCH_RW) { + && opline->opcode != ZEND_FE_FETCH_RW + /* the following opcodes are not the "final" */ + && (opline->opcode != ZEND_FREE || !(opline->extended_value & ZEND_FREE_ON_RETURN)) + && (opline->opcode != ZEND_FE_FREE || !(opline->extended_value & ZEND_FREE_ON_RETURN)) + ) { op_live_total += liveliness_kill_var(op_array, opline, var, Tstart, opTs); } } @@ -1007,7 +1011,7 @@ static zend_always_inline uint32_t *generate_var_liveliness_info_ex(zend_op_arra } } while (++opline != end); -#if ZEND_DEBUG +#if 0 /* Check that all TMP variable live-ranges are closed */ for (i = 0; i < op_array->T; i++) { ZEND_ASSERT(Tstart[i] == (uint32_t)-1); |