]> granicus.if.org Git - php/commitdiff
Respect optimization_level when running JIT inference
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 28 May 2019 15:28:33 +0000 (17:28 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 28 May 2019 15:29:28 +0000 (17:29 +0200)
Don't enable unsafe type inference by default -- we'll segfault on
some FFI tests.

ext/opcache/jit/zend_jit.c

index eabdcf3f7112acb7d26762a371ecf4cf071d60e3..0d43576ed333665920570e1477ad08d66f0fa79d 100644 (file)
@@ -664,10 +664,8 @@ static int zend_jit_op_array_analyze2(zend_op_array *op_array, zend_script *scri
         && !(op_array->fn_flags & ZEND_ACC_GENERATOR)
         && !(ssa->cfg.flags & ZEND_FUNC_INDIRECT_VAR_ACCESS)) {
 
-               /* TODO: passing ZEND_OPTIMIZER_ALL_PASSES as optimization_level
-                * may break overloaded operators (see ext/gmp/tests/overloading.phpt)
-                */
-               if (zend_ssa_inference(&CG(arena), op_array, script, ssa, ZEND_OPTIMIZER_ALL_PASSES /*- ZEND_OPTIMIZER_IGNORE_OVERLOADING*/) != SUCCESS) {
+               uint32_t optimization_level = ZCG(accel_directives).optimization_level;
+               if (zend_ssa_inference(&CG(arena), op_array, script, ssa, optimization_level) != SUCCESS) {
                        return FAILURE;
                }
        }