diff --git a/ext/opcache/Optimizer/zend_ssa.c b/ext/opcache/Optimizer/zend_ssa.c index 61bc146eb4c..e6f73be411e 100644 --- a/ext/opcache/Optimizer/zend_ssa.c +++ b/ext/opcache/Optimizer/zend_ssa.c @@ -846,6 +846,11 @@ int zend_build_ssa(zend_arena **arena, const zend_script *script, const zend_op_ ALLOCA_FLAG(dfg_use_heap) ALLOCA_FLAG(var_use_heap) + if ((blocks_count * (op_array->last_var + op_array->T)) > 4 * 1024 * 1024) { + /* Don't buld SSA for very big functions */ + return FAILURE; + } + ssa->rt_constants = (build_flags & ZEND_RT_CONSTANTS); ssa_blocks = zend_arena_calloc(arena, blocks_count, sizeof(zend_ssa_block)); if (!ssa_blocks) {