]> granicus.if.org Git - php/commitdiff
Don't optimize function if inference failed
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 25 Oct 2018 14:31:10 +0000 (16:31 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 25 Oct 2018 14:44:24 +0000 (16:44 +0200)
This was respected only for the single-function optimizations, not
in func-info mode.

ext/opcache/Optimizer/zend_optimizer.c

index 3904a6d35ad324b164f872baf6c45a93e461aa84..bdfd52d8d10bcd13702b9bf5f517d4d9b6cbb42e 100644 (file)
@@ -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);
+                               }
                        }
                }