diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2018-10-25 16:31:10 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2018-10-25 16:44:24 +0200 |
commit | b9431ef4d5c07c19cd141fdb430e3fd763db257c (patch) | |
tree | ae3acc8a3727f9a714b3dca19580a0a31fa779d5 | |
parent | 78c2e0e34299499af2d0cfec3dde7aaf5c48206c (diff) | |
download | php-git-b9431ef4d5c07c19cd141fdb430e3fd763db257c.tar.gz |
Don't optimize function if inference failed
This was respected only for the single-function optimizations, not
in func-info mode.
-rw-r--r-- | ext/opcache/Optimizer/zend_optimizer.c | 7 |
1 files 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); + } } } |