From 40702799b5f08b093477098881b6e0cfcb3ea411 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Fri, 18 Dec 2015 17:37:40 +0800 Subject: [PATCH] Improved fix for #71127 --- ext/opcache/Optimizer/pass1_5.c | 5 ++--- ext/opcache/Optimizer/zend_optimizer.h | 3 ++- ext/opcache/tests/bug71127.phpt | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ext/opcache/Optimizer/pass1_5.c b/ext/opcache/Optimizer/pass1_5.c index f252117de7..4229f13ebe 100644 --- a/ext/opcache/Optimizer/pass1_5.c +++ b/ext/opcache/Optimizer/pass1_5.c @@ -16,9 +16,8 @@ if (ZEND_OPTIMIZER_PASS_1 & OPTIMIZATION_LEVEL) { int i = 0; zend_op *opline = op_array->opcodes; zend_op *end = opline + op_array->last; - /* bug #71127* - zend_bool collect_constants = (op_array == &script->main_op_array); */ - zend_bool collect_constants = 0; + zend_bool collect_constants = (ZEND_OPTIMIZER_PASS_15 & OPTIMIZATION_LEVEL)? + (op_array == &script->main_op_array) : 0; while (opline < end) { switch (opline->opcode) { diff --git a/ext/opcache/Optimizer/zend_optimizer.h b/ext/opcache/Optimizer/zend_optimizer.h index fc6ec4357d..f4e441790f 100644 --- a/ext/opcache/Optimizer/zend_optimizer.h +++ b/ext/opcache/Optimizer/zend_optimizer.h @@ -39,9 +39,10 @@ #define ZEND_OPTIMIZER_PASS_12 (1<<11) #define ZEND_OPTIMIZER_PASS_13 (1<<12) #define ZEND_OPTIMIZER_PASS_14 (1<<13) +#define ZEND_OPTIMIZER_PASS_15 (1<<14) /* Collect constants */ #define ZEND_OPTIMIZER_ALL_PASSES 0xFFFFFFFF -#define DEFAULT_OPTIMIZATION_LEVEL "0xFFFFFFFF" +#define DEFAULT_OPTIMIZATION_LEVEL "0xFFFFBFFF" #endif diff --git a/ext/opcache/tests/bug71127.phpt b/ext/opcache/tests/bug71127.phpt index 78c5535062..5770aea1fb 100644 --- a/ext/opcache/tests/bug71127.phpt +++ b/ext/opcache/tests/bug71127.phpt @@ -3,6 +3,7 @@ Bug #71127 (Define in auto_prepend_file is overwrite) --INI-- opcache.enable=1 opcache.enable_cli=1 +opcache.optimization_level=0xFFFFBFFF --SKIPIF-- --FILE-- -- 2.40.0