From 79071fe227cdd64799c1b0aa31425b85a503a42f Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Fri, 22 Jan 2016 13:30:34 +0300 Subject: [PATCH] Added optimization constraint (don't optimize result of NEW, because constructor may throw exception) --- ext/opcache/Optimizer/dfa_pass.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ext/opcache/Optimizer/dfa_pass.c b/ext/opcache/Optimizer/dfa_pass.c index 02dfdd5b7e..7c71e535b4 100644 --- a/ext/opcache/Optimizer/dfa_pass.c +++ b/ext/opcache/Optimizer/dfa_pass.c @@ -155,6 +155,8 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx && ssa->ops[op2].op2_use_chain < 0 && !ssa->vars[var1].phi_use_chain && !ssa->vars[var1].sym_use_chain + /* see Zend/tests/generators/aborted_yield_during_new.phpt */ + && op_array->opcodes[ssa->vars[var1].definition].opcode != ZEND_NEW ) { int op1 = ssa->vars[var1].definition; int var3 = i; -- 2.40.0