From b9431ef4d5c07c19cd141fdb430e3fd763db257c Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 25 Oct 2018 16:31:10 +0200 Subject: [PATCH] Don't optimize function if inference failed This was respected only for the single-function optimizations, not in func-info mode. --- ext/opcache/Optimizer/zend_optimizer.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index 3904a6d35a..bdfd52d8d1 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -1488,8 +1488,11 @@ int zend_optimize_script(zend_script *script, zend_long optimization_level, zend for (i = 0; i < call_graph.op_arrays_count; i++) { func_info = ZEND_FUNC_INFO(call_graph.op_arrays[i]); if (func_info) { - zend_dfa_analyze_op_array(call_graph.op_arrays[i], &ctx, &func_info->ssa); - func_info->flags = func_info->ssa.cfg.flags; + if (zend_dfa_analyze_op_array(call_graph.op_arrays[i], &ctx, &func_info->ssa) == SUCCESS) { + func_info->flags = func_info->ssa.cfg.flags; + } else { + ZEND_SET_FUNC_INFO(call_graph.op_arrays[i], NULL); + } } } -- 2.40.0