summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/Optimizer/block_pass.c (renamed from ext/opcache/Optimizer/block_pass.c)0
-rw-r--r--Zend/Optimizer/compact_literals.c (renamed from ext/opcache/Optimizer/compact_literals.c)0
-rw-r--r--Zend/Optimizer/compact_vars.c (renamed from ext/opcache/Optimizer/compact_vars.c)1
-rw-r--r--Zend/Optimizer/dce.c (renamed from ext/opcache/Optimizer/dce.c)1
-rw-r--r--Zend/Optimizer/dfa_pass.c (renamed from ext/opcache/Optimizer/dfa_pass.c)0
-rw-r--r--Zend/Optimizer/escape_analysis.c (renamed from ext/opcache/Optimizer/escape_analysis.c)0
-rw-r--r--Zend/Optimizer/nop_removal.c (renamed from ext/opcache/Optimizer/nop_removal.c)0
-rw-r--r--Zend/Optimizer/optimize_func_calls.c (renamed from ext/opcache/Optimizer/optimize_func_calls.c)0
-rw-r--r--Zend/Optimizer/optimize_temp_vars_5.c (renamed from ext/opcache/Optimizer/optimize_temp_vars_5.c)0
-rw-r--r--Zend/Optimizer/pass1.c (renamed from ext/opcache/Optimizer/pass1.c)0
-rw-r--r--Zend/Optimizer/pass3.c (renamed from ext/opcache/Optimizer/pass3.c)0
-rw-r--r--Zend/Optimizer/sccp.c (renamed from ext/opcache/Optimizer/sccp.c)1
-rw-r--r--Zend/Optimizer/scdf.c (renamed from ext/opcache/Optimizer/scdf.c)1
-rw-r--r--Zend/Optimizer/scdf.h (renamed from ext/opcache/Optimizer/scdf.h)0
-rw-r--r--Zend/Optimizer/ssa_integrity.c (renamed from ext/opcache/Optimizer/ssa_integrity.c)1
-rw-r--r--Zend/Optimizer/zend_call_graph.c (renamed from ext/opcache/Optimizer/zend_call_graph.c)8
-rw-r--r--Zend/Optimizer/zend_call_graph.h (renamed from ext/opcache/Optimizer/zend_call_graph.h)8
-rw-r--r--Zend/Optimizer/zend_cfg.c (renamed from ext/opcache/Optimizer/zend_cfg.c)8
-rw-r--r--Zend/Optimizer/zend_cfg.h (renamed from ext/opcache/Optimizer/zend_cfg.h)8
-rw-r--r--Zend/Optimizer/zend_dfg.c (renamed from ext/opcache/Optimizer/zend_dfg.c)2
-rw-r--r--Zend/Optimizer/zend_dfg.h (renamed from ext/opcache/Optimizer/zend_dfg.h)2
-rw-r--r--Zend/Optimizer/zend_dump.c (renamed from ext/opcache/Optimizer/zend_dump.c)8
-rw-r--r--Zend/Optimizer/zend_dump.h (renamed from ext/opcache/Optimizer/zend_dump.h)8
-rw-r--r--Zend/Optimizer/zend_func_info.c (renamed from ext/opcache/Optimizer/zend_func_info.c)4
-rw-r--r--Zend/Optimizer/zend_func_info.h (renamed from ext/opcache/Optimizer/zend_func_info.h)4
-rw-r--r--Zend/Optimizer/zend_inference.c (renamed from ext/opcache/Optimizer/zend_inference.c)23
-rw-r--r--Zend/Optimizer/zend_inference.h (renamed from ext/opcache/Optimizer/zend_inference.h)32
-rw-r--r--Zend/Optimizer/zend_optimizer.c (renamed from ext/opcache/Optimizer/zend_optimizer.c)2
-rw-r--r--Zend/Optimizer/zend_optimizer.h (renamed from ext/opcache/Optimizer/zend_optimizer.h)4
-rw-r--r--Zend/Optimizer/zend_optimizer_internal.h (renamed from ext/opcache/Optimizer/zend_optimizer_internal.h)0
-rw-r--r--Zend/Optimizer/zend_ssa.c (renamed from ext/opcache/Optimizer/zend_ssa.c)6
-rw-r--r--Zend/Optimizer/zend_ssa.h (renamed from ext/opcache/Optimizer/zend_ssa.h)6
-rw-r--r--Zend/Optimizer/zend_worklist.h (renamed from ext/opcache/Optimizer/zend_worklist.h)0
-rw-r--r--Zend/zend.c5
-rw-r--r--configure.ac35
-rw-r--r--ext/opcache/ZendAccelerator.c7
-rw-r--r--ext/opcache/config.m422
-rw-r--r--ext/opcache/config.w322
-rw-r--r--win32/build/config.w322
39 files changed, 104 insertions, 107 deletions
diff --git a/ext/opcache/Optimizer/block_pass.c b/Zend/Optimizer/block_pass.c
index e833ff3dbf..e833ff3dbf 100644
--- a/ext/opcache/Optimizer/block_pass.c
+++ b/Zend/Optimizer/block_pass.c
diff --git a/ext/opcache/Optimizer/compact_literals.c b/Zend/Optimizer/compact_literals.c
index 0e1529d2bd..0e1529d2bd 100644
--- a/ext/opcache/Optimizer/compact_literals.c
+++ b/Zend/Optimizer/compact_literals.c
diff --git a/ext/opcache/Optimizer/compact_vars.c b/Zend/Optimizer/compact_vars.c
index bf7a005787..e70e189827 100644
--- a/ext/opcache/Optimizer/compact_vars.c
+++ b/Zend/Optimizer/compact_vars.c
@@ -16,7 +16,6 @@
+----------------------------------------------------------------------+
*/
-#include "ZendAccelerator.h"
#include "Optimizer/zend_optimizer_internal.h"
#include "zend_bitset.h"
diff --git a/ext/opcache/Optimizer/dce.c b/Zend/Optimizer/dce.c
index 339b08167d..940f1b6ee2 100644
--- a/ext/opcache/Optimizer/dce.c
+++ b/Zend/Optimizer/dce.c
@@ -17,7 +17,6 @@
+----------------------------------------------------------------------+
*/
-#include "ZendAccelerator.h"
#include "Optimizer/zend_optimizer_internal.h"
#include "Optimizer/zend_inference.h"
#include "Optimizer/zend_ssa.h"
diff --git a/ext/opcache/Optimizer/dfa_pass.c b/Zend/Optimizer/dfa_pass.c
index fe06de276b..fe06de276b 100644
--- a/ext/opcache/Optimizer/dfa_pass.c
+++ b/Zend/Optimizer/dfa_pass.c
diff --git a/ext/opcache/Optimizer/escape_analysis.c b/Zend/Optimizer/escape_analysis.c
index c0d5081c1f..c0d5081c1f 100644
--- a/ext/opcache/Optimizer/escape_analysis.c
+++ b/Zend/Optimizer/escape_analysis.c
diff --git a/ext/opcache/Optimizer/nop_removal.c b/Zend/Optimizer/nop_removal.c
index 32d2f10bf4..32d2f10bf4 100644
--- a/ext/opcache/Optimizer/nop_removal.c
+++ b/Zend/Optimizer/nop_removal.c
diff --git a/ext/opcache/Optimizer/optimize_func_calls.c b/Zend/Optimizer/optimize_func_calls.c
index 319b17438d..319b17438d 100644
--- a/ext/opcache/Optimizer/optimize_func_calls.c
+++ b/Zend/Optimizer/optimize_func_calls.c
diff --git a/ext/opcache/Optimizer/optimize_temp_vars_5.c b/Zend/Optimizer/optimize_temp_vars_5.c
index 6f7400159d..6f7400159d 100644
--- a/ext/opcache/Optimizer/optimize_temp_vars_5.c
+++ b/Zend/Optimizer/optimize_temp_vars_5.c
diff --git a/ext/opcache/Optimizer/pass1.c b/Zend/Optimizer/pass1.c
index 86774afef4..86774afef4 100644
--- a/ext/opcache/Optimizer/pass1.c
+++ b/Zend/Optimizer/pass1.c
diff --git a/ext/opcache/Optimizer/pass3.c b/Zend/Optimizer/pass3.c
index f98c41848c..f98c41848c 100644
--- a/ext/opcache/Optimizer/pass3.c
+++ b/Zend/Optimizer/pass3.c
diff --git a/ext/opcache/Optimizer/sccp.c b/Zend/Optimizer/sccp.c
index bc9dc38680..e097f654c8 100644
--- a/ext/opcache/Optimizer/sccp.c
+++ b/Zend/Optimizer/sccp.c
@@ -19,7 +19,6 @@
#include "php.h"
#include "zend_type_info.h"
-#include "ZendAccelerator.h"
#include "Optimizer/zend_optimizer_internal.h"
#include "Optimizer/zend_call_graph.h"
#include "Optimizer/zend_inference.h"
diff --git a/ext/opcache/Optimizer/scdf.c b/Zend/Optimizer/scdf.c
index 89852e89e0..e414081987 100644
--- a/ext/opcache/Optimizer/scdf.c
+++ b/Zend/Optimizer/scdf.c
@@ -16,7 +16,6 @@
+----------------------------------------------------------------------+
*/
-#include "ZendAccelerator.h"
#include "Optimizer/zend_optimizer_internal.h"
#include "Optimizer/scdf.h"
diff --git a/ext/opcache/Optimizer/scdf.h b/Zend/Optimizer/scdf.h
index 1ab1cec3bd..1ab1cec3bd 100644
--- a/ext/opcache/Optimizer/scdf.h
+++ b/Zend/Optimizer/scdf.h
diff --git a/ext/opcache/Optimizer/ssa_integrity.c b/Zend/Optimizer/ssa_integrity.c
index 47b9d6053e..4bd7705816 100644
--- a/ext/opcache/Optimizer/ssa_integrity.c
+++ b/Zend/Optimizer/ssa_integrity.c
@@ -16,7 +16,6 @@
+----------------------------------------------------------------------+
*/
-#include "ZendAccelerator.h"
#include "Optimizer/zend_optimizer_internal.h"
/* The ssa_verify_integrity() function ensures that that certain invariants of the SSA form and
diff --git a/ext/opcache/Optimizer/zend_call_graph.c b/Zend/Optimizer/zend_call_graph.c
index 124596ea39..b0f3247cd7 100644
--- a/ext/opcache/Optimizer/zend_call_graph.c
+++ b/Zend/Optimizer/zend_call_graph.c
@@ -44,7 +44,7 @@ static void zend_op_array_collect(zend_op_array *op_array, void *context)
call_graph->op_arrays_count++;
}
-int zend_analyze_calls(zend_arena **arena, zend_script *script, uint32_t build_flags, zend_op_array *op_array, zend_func_info *func_info)
+ZEND_API int zend_analyze_calls(zend_arena **arena, zend_script *script, uint32_t build_flags, zend_op_array *op_array, zend_func_info *func_info)
{
zend_op *opline = op_array->opcodes;
zend_op *end = opline + op_array->last;
@@ -219,7 +219,7 @@ static void zend_sort_op_arrays(zend_call_graph *call_graph)
// TODO: perform topological sort of cyclic call graph
}
-int zend_build_call_graph(zend_arena **arena, zend_script *script, zend_call_graph *call_graph) /* {{{ */
+ZEND_API int zend_build_call_graph(zend_arena **arena, zend_script *script, zend_call_graph *call_graph) /* {{{ */
{
call_graph->op_arrays_count = 0;
zend_foreach_op_array(script, zend_op_array_calc, call_graph);
@@ -233,7 +233,7 @@ int zend_build_call_graph(zend_arena **arena, zend_script *script, zend_call_gra
}
/* }}} */
-void zend_analyze_call_graph(zend_arena **arena, zend_script *script, zend_call_graph *call_graph) /* {{{ */
+ZEND_API void zend_analyze_call_graph(zend_arena **arena, zend_script *script, zend_call_graph *call_graph) /* {{{ */
{
int i;
@@ -245,7 +245,7 @@ void zend_analyze_call_graph(zend_arena **arena, zend_script *script, zend_call_
}
/* }}} */
-zend_call_info **zend_build_call_map(zend_arena **arena, zend_func_info *info, const zend_op_array *op_array) /* {{{ */
+ZEND_API zend_call_info **zend_build_call_map(zend_arena **arena, zend_func_info *info, const zend_op_array *op_array) /* {{{ */
{
zend_call_info **map, *call;
if (!info->callee_info) {
diff --git a/ext/opcache/Optimizer/zend_call_graph.h b/Zend/Optimizer/zend_call_graph.h
index 2a3fb4380f..a456dcfbb8 100644
--- a/ext/opcache/Optimizer/zend_call_graph.h
+++ b/Zend/Optimizer/zend_call_graph.h
@@ -59,10 +59,10 @@ typedef struct _zend_call_graph {
BEGIN_EXTERN_C()
-int zend_build_call_graph(zend_arena **arena, zend_script *script, zend_call_graph *call_graph);
-void zend_analyze_call_graph(zend_arena **arena, zend_script *script, zend_call_graph *call_graph);
-zend_call_info **zend_build_call_map(zend_arena **arena, zend_func_info *info, const zend_op_array *op_array);
-int zend_analyze_calls(zend_arena **arena, zend_script *script, uint32_t build_flags, zend_op_array *op_array, zend_func_info *func_info);
+ZEND_API int zend_build_call_graph(zend_arena **arena, zend_script *script, zend_call_graph *call_graph);
+ZEND_API void zend_analyze_call_graph(zend_arena **arena, zend_script *script, zend_call_graph *call_graph);
+ZEND_API zend_call_info **zend_build_call_map(zend_arena **arena, zend_func_info *info, const zend_op_array *op_array);
+ZEND_API int zend_analyze_calls(zend_arena **arena, zend_script *script, uint32_t build_flags, zend_op_array *op_array, zend_func_info *func_info);
END_EXTERN_C()
diff --git a/ext/opcache/Optimizer/zend_cfg.c b/Zend/Optimizer/zend_cfg.c
index bbf8efb41a..973a93ef6c 100644
--- a/ext/opcache/Optimizer/zend_cfg.c
+++ b/Zend/Optimizer/zend_cfg.c
@@ -269,7 +269,7 @@ static void initialize_block(zend_basic_block *block) {
block_map[i]++; \
} while (0)
-int zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t build_flags, zend_cfg *cfg) /* {{{ */
+ZEND_API int zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t build_flags, zend_cfg *cfg) /* {{{ */
{
uint32_t flags = 0;
uint32_t i;
@@ -599,7 +599,7 @@ int zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t b
}
/* }}} */
-int zend_cfg_build_predecessors(zend_arena **arena, zend_cfg *cfg) /* {{{ */
+ZEND_API int zend_cfg_build_predecessors(zend_arena **arena, zend_cfg *cfg) /* {{{ */
{
int j, s, edges;
zend_basic_block *b;
@@ -682,7 +682,7 @@ static void compute_postnum_recursive(
/* Computes dominator tree using algorithm from "A Simple, Fast Dominance Algorithm" by
* Cooper, Harvey and Kennedy. */
-int zend_cfg_compute_dominators_tree(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */
+ZEND_API int zend_cfg_compute_dominators_tree(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */
{
zend_basic_block *blocks = cfg->blocks;
int blocks_count = cfg->blocks_count;
@@ -795,7 +795,7 @@ static void swap_blocks(block_info *a, block_info *b) {
*b = tmp;
}
-int zend_cfg_identify_loops(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */
+ZEND_API int zend_cfg_identify_loops(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */
{
int i, j, k, n;
int time;
diff --git a/ext/opcache/Optimizer/zend_cfg.h b/Zend/Optimizer/zend_cfg.h
index eb607c83c2..6fff720ed3 100644
--- a/ext/opcache/Optimizer/zend_cfg.h
+++ b/Zend/Optimizer/zend_cfg.h
@@ -116,11 +116,11 @@ typedef struct _zend_cfg {
BEGIN_EXTERN_C()
-int zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t build_flags, zend_cfg *cfg);
+ZEND_API int zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t build_flags, zend_cfg *cfg);
void zend_cfg_remark_reachable_blocks(const zend_op_array *op_array, zend_cfg *cfg);
-int zend_cfg_build_predecessors(zend_arena **arena, zend_cfg *cfg);
-int zend_cfg_compute_dominators_tree(const zend_op_array *op_array, zend_cfg *cfg);
-int zend_cfg_identify_loops(const zend_op_array *op_array, zend_cfg *cfg);
+ZEND_API int zend_cfg_build_predecessors(zend_arena **arena, zend_cfg *cfg);
+ZEND_API int zend_cfg_compute_dominators_tree(const zend_op_array *op_array, zend_cfg *cfg);
+ZEND_API int zend_cfg_identify_loops(const zend_op_array *op_array, zend_cfg *cfg);
END_EXTERN_C()
diff --git a/ext/opcache/Optimizer/zend_dfg.c b/Zend/Optimizer/zend_dfg.c
index 25a910ef71..b059f1f0ea 100644
--- a/ext/opcache/Optimizer/zend_dfg.c
+++ b/Zend/Optimizer/zend_dfg.c
@@ -242,7 +242,7 @@ add_op1_def:
}
/* }}} */
-void zend_dfg_add_use_def_op(const zend_op_array *op_array, const zend_op *opline, uint32_t build_flags, zend_bitset use, zend_bitset def) /* {{{ */
+ZEND_API void zend_dfg_add_use_def_op(const zend_op_array *op_array, const zend_op *opline, uint32_t build_flags, zend_bitset use, zend_bitset def) /* {{{ */
{
_zend_dfg_add_use_def_op(op_array, opline, build_flags, use, def);
}
diff --git a/ext/opcache/Optimizer/zend_dfg.h b/Zend/Optimizer/zend_dfg.h
index a675187794..6ec92be307 100644
--- a/ext/opcache/Optimizer/zend_dfg.h
+++ b/Zend/Optimizer/zend_dfg.h
@@ -44,7 +44,7 @@ typedef struct _zend_dfg {
BEGIN_EXTERN_C()
int zend_build_dfg(const zend_op_array *op_array, const zend_cfg *cfg, zend_dfg *dfg, uint32_t build_flags);
-void zend_dfg_add_use_def_op(const zend_op_array *op_array, const zend_op *opline, uint32_t build_flags, zend_bitset use, zend_bitset def);
+ZEND_API void zend_dfg_add_use_def_op(const zend_op_array *op_array, const zend_op *opline, uint32_t build_flags, zend_bitset use, zend_bitset def);
END_EXTERN_C()
diff --git a/ext/opcache/Optimizer/zend_dump.c b/Zend/Optimizer/zend_dump.c
index cb835574d8..e2fdbbcbf7 100644
--- a/ext/opcache/Optimizer/zend_dump.c
+++ b/Zend/Optimizer/zend_dump.c
@@ -133,7 +133,7 @@ static void zend_dump_unused_op(const zend_op *opline, znode_op op, uint32_t fla
}
}
-void zend_dump_var(const zend_op_array *op_array, zend_uchar var_type, int var_num)
+ZEND_API void zend_dump_var(const zend_op_array *op_array, zend_uchar var_type, int var_num)
{
if (var_type == IS_CV && var_num < op_array->last_var) {
fprintf(stderr, "CV%d($%s)", var_num, op_array->vars[var_num]->val);
@@ -332,7 +332,7 @@ static void zend_dump_ssa_var_info(const zend_ssa *ssa, int ssa_var_num, uint32_
dump_flags);
}
-void zend_dump_ssa_var(const zend_op_array *op_array, const zend_ssa *ssa, int ssa_var_num, zend_uchar var_type, int var_num, uint32_t dump_flags)
+ZEND_API void zend_dump_ssa_var(const zend_op_array *op_array, const zend_ssa *ssa, int ssa_var_num, zend_uchar var_type, int var_num, uint32_t dump_flags)
{
if (ssa_var_num >= 0) {
fprintf(stderr, "#%d.", ssa_var_num);
@@ -405,7 +405,7 @@ static void zend_dump_range_constraint(const zend_op_array *op_array, const zend
}
}
-void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, const zend_op *opline, uint32_t dump_flags, const zend_ssa *ssa, const zend_ssa_op *ssa_op)
+ZEND_API void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, const zend_op *opline, uint32_t dump_flags, const zend_ssa *ssa, const zend_ssa_op *ssa_op)
{
const char *name = zend_get_opcode_name(opline->opcode);
uint32_t flags = zend_get_opcode_flags(opline->opcode);
@@ -881,7 +881,7 @@ void zend_dump_op_array_name(const zend_op_array *op_array)
}
}
-void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, const char *msg, const void *data)
+ZEND_API void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, const char *msg, const void *data)
{
int i;
const zend_cfg *cfg = NULL;
diff --git a/ext/opcache/Optimizer/zend_dump.h b/Zend/Optimizer/zend_dump.h
index 3d8ff7ad7a..b0e0d7966b 100644
--- a/ext/opcache/Optimizer/zend_dump.h
+++ b/Zend/Optimizer/zend_dump.h
@@ -30,15 +30,15 @@
BEGIN_EXTERN_C()
-void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, const char *msg, const void *data);
-void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, const zend_op *opline, uint32_t dump_flags, const zend_ssa *ssa, const zend_ssa_op *ssa_op);
+ZEND_API void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, const char *msg, const void *data);
+ZEND_API void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, const zend_op *opline, uint32_t dump_flags, const zend_ssa *ssa, const zend_ssa_op *ssa_op);
void zend_dump_dominators(const zend_op_array *op_array, const zend_cfg *cfg);
void zend_dump_dfg(const zend_op_array *op_array, const zend_cfg *cfg, const zend_dfg *dfg);
void zend_dump_phi_placement(const zend_op_array *op_array, const zend_ssa *ssa);
void zend_dump_variables(const zend_op_array *op_array);
void zend_dump_ssa_variables(const zend_op_array *op_array, const zend_ssa *ssa, uint32_t dump_flags);
-void zend_dump_ssa_var(const zend_op_array *op_array, const zend_ssa *ssa, int ssa_var_num, zend_uchar var_type, int var_num, uint32_t dump_flags);
-void zend_dump_var(const zend_op_array *op_array, zend_uchar var_type, int var_num);
+ZEND_API void zend_dump_ssa_var(const zend_op_array *op_array, const zend_ssa *ssa, int ssa_var_num, zend_uchar var_type, int var_num, uint32_t dump_flags);
+ZEND_API void zend_dump_var(const zend_op_array *op_array, zend_uchar var_type, int var_num);
void zend_dump_op_array_name(const zend_op_array *op_array);
void zend_dump_const(const zval *zv);
void zend_dump_ht(HashTable *ht);
diff --git a/ext/opcache/Optimizer/zend_func_info.c b/Zend/Optimizer/zend_func_info.c
index 228051ee86..073a054c0f 100644
--- a/ext/opcache/Optimizer/zend_func_info.c
+++ b/Zend/Optimizer/zend_func_info.c
@@ -837,7 +837,7 @@ static const func_info_t func_infos[] = {
};
static HashTable func_info;
-int zend_func_info_rid = -1;
+ZEND_API int zend_func_info_rid = -1;
static uint32_t get_internal_func_info(
const zend_call_info *call_info, const zend_ssa *ssa, zend_string *lcname) {
@@ -859,7 +859,7 @@ static uint32_t get_internal_func_info(
}
}
-uint32_t zend_get_func_info(
+ZEND_API uint32_t zend_get_func_info(
const zend_call_info *call_info, const zend_ssa *ssa,
zend_class_entry **ce, bool *ce_is_instanceof)
{
diff --git a/ext/opcache/Optimizer/zend_func_info.h b/Zend/Optimizer/zend_func_info.h
index 423d557f7a..53ad99c22e 100644
--- a/ext/opcache/Optimizer/zend_func_info.h
+++ b/Zend/Optimizer/zend_func_info.h
@@ -54,9 +54,9 @@ typedef struct _zend_call_info zend_call_info;
BEGIN_EXTERN_C()
-extern int zend_func_info_rid;
+extern ZEND_API int zend_func_info_rid;
-uint32_t zend_get_func_info(
+ZEND_API uint32_t zend_get_func_info(
const zend_call_info *call_info, const zend_ssa *ssa,
zend_class_entry **ce, bool *ce_is_instanceof);
diff --git a/ext/opcache/Optimizer/zend_inference.c b/Zend/Optimizer/zend_inference.c
index 92be7ee802..ba51283beb 100644
--- a/ext/opcache/Optimizer/zend_inference.c
+++ b/Zend/Optimizer/zend_inference.c
@@ -207,7 +207,7 @@ static void zend_ssa_check_scc_var(const zend_op_array *op_array, zend_ssa *ssa,
}
/* }}} */
-int zend_ssa_find_sccs(const zend_op_array *op_array, zend_ssa *ssa) /* {{{ */
+ZEND_API int zend_ssa_find_sccs(const zend_op_array *op_array, zend_ssa *ssa) /* {{{ */
{
int index = 0, *dfs, *root;
zend_worklist_stack stack;
@@ -253,7 +253,7 @@ int zend_ssa_find_sccs(const zend_op_array *op_array, zend_ssa *ssa) /* {{{ */
}
/* }}} */
-int zend_ssa_find_false_dependencies(const zend_op_array *op_array, zend_ssa *ssa) /* {{{ */
+ZEND_API int zend_ssa_find_false_dependencies(const zend_op_array *op_array, zend_ssa *ssa) /* {{{ */
{
zend_ssa_var *ssa_vars = ssa->vars;
zend_ssa_op *ssa_ops = ssa->ops;
@@ -1003,7 +1003,7 @@ int zend_inference_calc_range(const zend_op_array *op_array, zend_ssa *ssa, int
return zend_inference_propagate_range(op_array, ssa, opline, ssa_op, var, tmp);
}
-int zend_inference_propagate_range(const zend_op_array *op_array, zend_ssa *ssa, zend_op *opline, zend_ssa_op* ssa_op, int var, zend_ssa_range *tmp)
+ZEND_API int zend_inference_propagate_range(const zend_op_array *op_array, zend_ssa *ssa, zend_op *opline, zend_ssa_op* ssa_op, int var, zend_ssa_range *tmp)
{
zend_long op1_min, op2_min, op1_max, op2_max;
@@ -1955,7 +1955,7 @@ static void emit_type_narrowing_warning(const zend_op_array *op_array, zend_ssa
zend_error(E_WARNING, "Narrowing occurred during type inference of %s. Please file a bug report on bugs.php.net", def_op_name);
}
-uint32_t zend_array_element_type(uint32_t t1, zend_uchar op_type, int write, int insert)
+ZEND_API uint32_t zend_array_element_type(uint32_t t1, zend_uchar op_type, int write, int insert)
{
uint32_t tmp = 0;
@@ -2198,7 +2198,7 @@ static uint32_t zend_convert_type_declaration_mask(uint32_t type_mask) {
return result_mask;
}
-uint32_t zend_fetch_arg_info_type(const zend_script *script, zend_arg_info *arg_info, zend_class_entry **pce)
+ZEND_API uint32_t zend_fetch_arg_info_type(const zend_script *script, zend_arg_info *arg_info, zend_class_entry **pce)
{
uint32_t tmp;
@@ -3596,7 +3596,7 @@ unknown_opcode:
return SUCCESS;
}
-int zend_update_type_info(
+ZEND_API int zend_update_type_info(
const zend_op_array *op_array,
zend_ssa *ssa,
const zend_script *script,
@@ -3977,9 +3977,8 @@ static int is_recursive_tail_call(const zend_op_array *op_array,
return 0;
}
-void zend_init_func_return_info(const zend_op_array *op_array,
- const zend_script *script,
- zend_ssa_var_info *ret)
+ZEND_API void zend_init_func_return_info(
+ const zend_op_array *op_array, const zend_script *script, zend_ssa_var_info *ret)
{
if (op_array->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
zend_arg_info *ret_info = op_array->arg_info - 1;
@@ -4224,7 +4223,7 @@ static int zend_infer_types(const zend_op_array *op_array, const zend_script *sc
return SUCCESS;
}
-int zend_ssa_inference(zend_arena **arena, const zend_op_array *op_array, const zend_script *script, zend_ssa *ssa, zend_long optimization_level) /* {{{ */
+ZEND_API int zend_ssa_inference(zend_arena **arena, const zend_op_array *op_array, const zend_script *script, zend_ssa *ssa, zend_long optimization_level) /* {{{ */
{
zend_ssa_var_info *ssa_var_info;
int i;
@@ -4296,7 +4295,7 @@ void zend_inference_check_recursive_dependencies(zend_op_array *op_array)
free_alloca(worklist, use_heap);
}
-int zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa, uint32_t t1, uint32_t t2)
+ZEND_API int zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa, uint32_t t1, uint32_t t2)
{
if (opline->op1_type == IS_CV) {
if (t1 & MAY_BE_UNDEF) {
@@ -4675,7 +4674,7 @@ int zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op, const ze
}
}
-int zend_may_throw(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa)
+ZEND_API int zend_may_throw(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa)
{
return zend_may_throw_ex(opline, ssa_op, op_array, ssa, OP1_INFO(), OP2_INFO());
}
diff --git a/ext/opcache/Optimizer/zend_inference.h b/Zend/Optimizer/zend_inference.h
index 11a9d74d75..8390946012 100644
--- a/ext/opcache/Optimizer/zend_inference.h
+++ b/Zend/Optimizer/zend_inference.h
@@ -250,14 +250,14 @@ static zend_always_inline bool zend_sub_will_overflow(zend_long a, zend_long b)
BEGIN_EXTERN_C()
-int zend_ssa_find_false_dependencies(const zend_op_array *op_array, zend_ssa *ssa);
-int zend_ssa_find_sccs(const zend_op_array *op_array, zend_ssa *ssa);
-int zend_ssa_inference(zend_arena **raena, const zend_op_array *op_array, const zend_script *script, zend_ssa *ssa, zend_long optimization_level);
+ZEND_API int zend_ssa_find_false_dependencies(const zend_op_array *op_array, zend_ssa *ssa);
+ZEND_API int zend_ssa_find_sccs(const zend_op_array *op_array, zend_ssa *ssa);
+ZEND_API int zend_ssa_inference(zend_arena **raena, const zend_op_array *op_array, const zend_script *script, zend_ssa *ssa, zend_long optimization_level);
-uint32_t zend_array_element_type(uint32_t t1, zend_uchar op_type, int write, int insert);
+ZEND_API uint32_t zend_array_element_type(uint32_t t1, zend_uchar op_type, int write, int insert);
int zend_inference_calc_range(const zend_op_array *op_array, zend_ssa *ssa, int var, int widening, int narrowing, zend_ssa_range *tmp);
-int zend_inference_propagate_range(const zend_op_array *op_array, zend_ssa *ssa, zend_op *opline, zend_ssa_op* ssa_op, int var, zend_ssa_range *tmp);
+ZEND_API int zend_inference_propagate_range(const zend_op_array *op_array, zend_ssa *ssa, zend_op *opline, zend_ssa_op* ssa_op, int var, zend_ssa_range *tmp);
void zend_inference_init_range(const zend_op_array *op_array, zend_ssa *ssa, int var, bool underflow, zend_long min, zend_long max, bool overflow);
int zend_inference_narrowing_meet(zend_ssa_var_info *var_info, zend_ssa_range *r);
int zend_inference_widening_meet(zend_ssa_var_info *var_info, zend_ssa_range *r);
@@ -265,27 +265,23 @@ void zend_inference_check_recursive_dependencies(zend_op_array *op_array);
int zend_infer_types_ex(const zend_op_array *op_array, const zend_script *script, zend_ssa *ssa, zend_bitset worklist, zend_long optimization_level);
-uint32_t zend_fetch_arg_info_type(
+ZEND_API uint32_t zend_fetch_arg_info_type(
const zend_script *script, zend_arg_info *arg_info, zend_class_entry **pce);
-void zend_init_func_return_info(const zend_op_array *op_array,
- const zend_script *script,
- zend_ssa_var_info *ret);
+ZEND_API void zend_init_func_return_info(
+ const zend_op_array *op_array, const zend_script *script, zend_ssa_var_info *ret);
void zend_func_return_info(const zend_op_array *op_array,
const zend_script *script,
int recursive,
int widening,
zend_ssa_var_info *ret);
-int zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa, uint32_t t1, uint32_t t2);
-int zend_may_throw(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa);
+ZEND_API int zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa, uint32_t t1, uint32_t t2);
+ZEND_API int zend_may_throw(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa);
-int zend_update_type_info(const zend_op_array *op_array,
- zend_ssa *ssa,
- const zend_script *script,
- zend_op *opline,
- zend_ssa_op *ssa_op,
- const zend_op **ssa_opcodes,
- zend_long optimization_level);
+ZEND_API int zend_update_type_info(
+ const zend_op_array *op_array, zend_ssa *ssa, const zend_script *script,
+ zend_op *opline, zend_ssa_op *ssa_op, const zend_op **ssa_opcodes,
+ zend_long optimization_level);
END_EXTERN_C()
diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/Zend/Optimizer/zend_optimizer.c
index 00c579491a..ae548fc520 100644
--- a/ext/opcache/Optimizer/zend_optimizer.c
+++ b/Zend/Optimizer/zend_optimizer.c
@@ -1405,7 +1405,7 @@ static void step_dump_after_optimizer(zend_op_array *op_array, void *context) {
zend_dump_op_array(op_array, ZEND_DUMP_LIVE_RANGES, "after optimizer", NULL);
}
-int zend_optimize_script(zend_script *script, zend_long optimization_level, zend_long debug_level)
+ZEND_API int zend_optimize_script(zend_script *script, zend_long optimization_level, zend_long debug_level)
{
zend_class_entry *ce;
zend_string *key;
diff --git a/ext/opcache/Optimizer/zend_optimizer.h b/Zend/Optimizer/zend_optimizer.h
index 04528d33e2..4b43255437 100644
--- a/ext/opcache/Optimizer/zend_optimizer.h
+++ b/Zend/Optimizer/zend_optimizer.h
@@ -89,8 +89,10 @@ typedef struct _zend_script {
uint32_t first_early_binding_opline; /* the linked list of delayed declarations */
} zend_script;
-int zend_optimize_script(zend_script *script, zend_long optimization_level, zend_long debug_level);
+BEGIN_EXTERN_C()
+ZEND_API int zend_optimize_script(zend_script *script, zend_long optimization_level, zend_long debug_level);
int zend_optimizer_startup(void);
int zend_optimizer_shutdown(void);
+END_EXTERN_C()
#endif
diff --git a/ext/opcache/Optimizer/zend_optimizer_internal.h b/Zend/Optimizer/zend_optimizer_internal.h
index 911eb79e64..911eb79e64 100644
--- a/ext/opcache/Optimizer/zend_optimizer_internal.h
+++ b/Zend/Optimizer/zend_optimizer_internal.h
diff --git a/ext/opcache/Optimizer/zend_ssa.c b/Zend/Optimizer/zend_ssa.c
index ad3ff7022b..6fe97cbc1e 100644
--- a/ext/opcache/Optimizer/zend_ssa.c
+++ b/Zend/Optimizer/zend_ssa.c
@@ -768,7 +768,7 @@ add_op1_def:
}
/* }}} */
-int zend_ssa_rename_op(const zend_op_array *op_array, const zend_op *opline, uint32_t k, uint32_t build_flags, int ssa_vars_count, zend_ssa_op *ssa_ops, int *var) /* {{{ */
+ZEND_API int zend_ssa_rename_op(const zend_op_array *op_array, const zend_op *opline, uint32_t k, uint32_t build_flags, int ssa_vars_count, zend_ssa_op *ssa_ops, int *var) /* {{{ */
{
return _zend_ssa_rename_op(op_array, opline, k, build_flags, ssa_vars_count, ssa_ops, var);
}
@@ -891,7 +891,7 @@ static int zend_ssa_rename(const zend_op_array *op_array, uint32_t build_flags,
}
/* }}} */
-int zend_build_ssa(zend_arena **arena, const zend_script *script, const zend_op_array *op_array, uint32_t build_flags, zend_ssa *ssa) /* {{{ */
+ZEND_API int zend_build_ssa(zend_arena **arena, const zend_script *script, const zend_op_array *op_array, uint32_t build_flags, zend_ssa *ssa) /* {{{ */
{
zend_basic_block *blocks = ssa->cfg.blocks;
zend_ssa_block *ssa_blocks;
@@ -1042,7 +1042,7 @@ int zend_build_ssa(zend_arena **arena, const zend_script *script, const zend_op_
}
/* }}} */
-int zend_ssa_compute_use_def_chains(zend_arena **arena, const zend_op_array *op_array, zend_ssa *ssa) /* {{{ */
+ZEND_API int zend_ssa_compute_use_def_chains(zend_arena **arena, const zend_op_array *op_array, zend_ssa *ssa) /* {{{ */
{
zend_ssa_var *ssa_vars;
int i;
diff --git a/ext/opcache/Optimizer/zend_ssa.h b/Zend/Optimizer/zend_ssa.h
index 68f39ad0ec..ddc9f95f43 100644
--- a/ext/opcache/Optimizer/zend_ssa.h
+++ b/Zend/Optimizer/zend_ssa.h
@@ -145,9 +145,9 @@ typedef struct _zend_ssa {
BEGIN_EXTERN_C()
-int zend_build_ssa(zend_arena **arena, const zend_script *script, const zend_op_array *op_array, uint32_t build_flags, zend_ssa *ssa);
-int zend_ssa_rename_op(const zend_op_array *op_array, const zend_op *opline, uint32_t k, uint32_t build_flags, int ssa_vars_count, zend_ssa_op *ssa_ops, int *var);
-int zend_ssa_compute_use_def_chains(zend_arena **arena, const zend_op_array *op_array, zend_ssa *ssa);
+ZEND_API int zend_build_ssa(zend_arena **arena, const zend_script *script, const zend_op_array *op_array, uint32_t build_flags, zend_ssa *ssa);
+ZEND_API int zend_ssa_compute_use_def_chains(zend_arena **arena, const zend_op_array *op_array, zend_ssa *ssa);
+ZEND_API int zend_ssa_rename_op(const zend_op_array *op_array, const zend_op *opline, uint32_t k, uint32_t build_flags, int ssa_vars_count, zend_ssa_op *ssa_ops, int *var);
int zend_ssa_unlink_use_chain(zend_ssa *ssa, int op, int var);
void zend_ssa_remove_predecessor(zend_ssa *ssa, int from, int to);
diff --git a/ext/opcache/Optimizer/zend_worklist.h b/Zend/Optimizer/zend_worklist.h
index 2f3e3dd979..2f3e3dd979 100644
--- a/ext/opcache/Optimizer/zend_worklist.h
+++ b/Zend/Optimizer/zend_worklist.h
diff --git a/Zend/zend.c b/Zend/zend.c
index 22cdc744e6..4da7991db6 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -34,6 +34,7 @@
#include "zend_cpuinfo.h"
#include "zend_attributes.h"
#include "zend_observer.h"
+#include "Optimizer/zend_optimizer.h"
static size_t global_map_ptr_last = 0;
@@ -953,6 +954,8 @@ void zend_startup(zend_utility_functions *utility_functions) /* {{{ */
php_win32_cp_setup();
#endif
+ zend_optimizer_startup();
+
#ifdef ZTS
tsrm_set_new_thread_end_handler(zend_new_thread_end_handler);
tsrm_set_shutdown_handler(zend_interned_strings_dtor);
@@ -1112,6 +1115,8 @@ void zend_shutdown(void) /* {{{ */
}
#endif
zend_destroy_rsrc_list_dtors();
+
+ zend_optimizer_shutdown();
}
/* }}} */
diff --git a/configure.ac b/configure.ac
index a17f48c551..1151557446 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1433,6 +1433,14 @@ PHP_SUBST(install_targets)
PHP_SUBST(install_binary_targets)
PHP_INSTALL_HEADERS([Zend/ TSRM/ include/ main/ main/streams/])
+PHP_INSTALL_HEADERS([Zend/Optimizer], [ \
+ zend_call_graph.h \
+ zend_cfg.h \
+ zend_dump.h \
+ zend_func_info.h \
+ zend_inference.h \
+ zend_optimizer.h \
+ zend_ssa.h])
PHP_ADD_SOURCES(TSRM, TSRM.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
@@ -1465,12 +1473,33 @@ PHP_ADD_SOURCES(Zend, \
zend_closures.c zend_weakrefs.c zend_float.c zend_string.c zend_signal.c zend_generators.c \
zend_virtual_cwd.c zend_ast.c zend_objects.c zend_object_handlers.c zend_objects_API.c \
zend_default_classes.c zend_inheritance.c zend_smart_str.c zend_cpuinfo.c zend_gdb.c \
- zend_observer.c zend_system_id.c, \
- -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
+ zend_observer.c zend_system_id.c \
+ Optimizer/zend_optimizer.c \
+ Optimizer/pass1.c \
+ Optimizer/pass3.c \
+ Optimizer/optimize_func_calls.c \
+ Optimizer/block_pass.c \
+ Optimizer/optimize_temp_vars_5.c \
+ Optimizer/nop_removal.c \
+ Optimizer/compact_literals.c \
+ Optimizer/zend_cfg.c \
+ Optimizer/zend_dfg.c \
+ Optimizer/dfa_pass.c \
+ Optimizer/zend_ssa.c \
+ Optimizer/zend_inference.c \
+ Optimizer/zend_func_info.c \
+ Optimizer/zend_call_graph.c \
+ Optimizer/sccp.c \
+ Optimizer/scdf.c \
+ Optimizer/dce.c \
+ Optimizer/escape_analysis.c \
+ Optimizer/compact_vars.c \
+ Optimizer/zend_dump.c \
+ , -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
PHP_ADD_BUILD_DIR(main main/streams)
PHP_ADD_BUILD_DIR(TSRM)
-PHP_ADD_BUILD_DIR(Zend)
+PHP_ADD_BUILD_DIR(Zend Zend/Optimizer)
PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/scripts/Makefile.frag,$abs_srcdir/scripts,scripts)
PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/Zend/Makefile.frag,$abs_srcdir/Zend,Zend)
diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c
index 0ebe5a41ae..5101660a4a 100644
--- a/ext/opcache/ZendAccelerator.c
+++ b/ext/opcache/ZendAccelerator.c
@@ -2957,9 +2957,6 @@ static zend_result accel_post_startup(void)
}
}
- /* Initialize zend_func_info_rid */
- zend_optimizer_startup();
-
/********************************************/
/* End of non-SHM dependent initializations */
/********************************************/
@@ -3119,8 +3116,6 @@ file_cache_fallback:
zend_accel_blacklist_load(&accel_blacklist, ZCG(accel_directives.user_blacklist_filename));
}
- zend_optimizer_startup();
-
if (!file_cache_only && ZCG(accel_directives).interned_strings_buffer) {
accel_use_shm_interned_strings();
}
@@ -3144,8 +3139,6 @@ void accel_shutdown(void)
zend_jit_shutdown();
#endif
- zend_optimizer_shutdown();
-
zend_accel_blacklist_shutdown(&accel_blacklist);
if (!ZCG(enabled) || !accel_startup_ok) {
diff --git a/ext/opcache/config.m4 b/ext/opcache/config.m4
index 93d72fb73d..33c99c59c1 100644
--- a/ext/opcache/config.m4
+++ b/ext/opcache/config.m4
@@ -312,31 +312,9 @@ int main() {
shared_alloc_shm.c \
shared_alloc_mmap.c \
shared_alloc_posix.c \
- Optimizer/zend_optimizer.c \
- Optimizer/pass1.c \
- Optimizer/pass3.c \
- Optimizer/optimize_func_calls.c \
- Optimizer/block_pass.c \
- Optimizer/optimize_temp_vars_5.c \
- Optimizer/nop_removal.c \
- Optimizer/compact_literals.c \
- Optimizer/zend_cfg.c \
- Optimizer/zend_dfg.c \
- Optimizer/dfa_pass.c \
- Optimizer/zend_ssa.c \
- Optimizer/zend_inference.c \
- Optimizer/zend_func_info.c \
- Optimizer/zend_call_graph.c \
- Optimizer/sccp.c \
- Optimizer/scdf.c \
- Optimizer/dce.c \
- Optimizer/escape_analysis.c \
- Optimizer/compact_vars.c \
- Optimizer/zend_dump.c \
$ZEND_JIT_SRC,
shared,,-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1,,yes)
- PHP_ADD_BUILD_DIR([$ext_builddir/Optimizer], 1)
PHP_ADD_EXTENSION_DEP(opcache, pcre)
if test "$have_shm_ipc" != "yes" && test "$have_shm_mmap_posix" != "yes" && test "$have_shm_mmap_anon" != "yes"; then
diff --git a/ext/opcache/config.w32 b/ext/opcache/config.w32
index fb921c73da..a7f292ee76 100644
--- a/ext/opcache/config.w32
+++ b/ext/opcache/config.w32
@@ -38,8 +38,6 @@ if (PHP_OPCACHE != "no") {
}
}
- ADD_SOURCES(configure_module_dirname + "/Optimizer", "zend_optimizer.c pass1.c pass3.c optimize_func_calls.c block_pass.c optimize_temp_vars_5.c nop_removal.c compact_literals.c zend_cfg.c zend_dfg.c dfa_pass.c zend_ssa.c zend_inference.c zend_func_info.c zend_call_graph.c zend_dump.c escape_analysis.c compact_vars.c dce.c sccp.c scdf.c", "opcache", "ext\\opcache\\Optimizer");
-
ADD_FLAG('CFLAGS_OPCACHE', "/I " + configure_module_dirname);
}
diff --git a/win32/build/config.w32 b/win32/build/config.w32
index a7d60812bd..64053cc056 100644
--- a/win32/build/config.w32
+++ b/win32/build/config.w32
@@ -238,6 +238,7 @@ ADD_SOURCES("Zend", "zend_language_parser.c zend_language_scanner.c \
zend_default_classes.c zend_execute.c zend_strtod.c zend_gc.c zend_closures.c zend_weakrefs.c \
zend_float.c zend_string.c zend_generators.c zend_virtual_cwd.c zend_ast.c \
zend_inheritance.c zend_smart_str.c zend_cpuinfo.c zend_observer.c zend_system_id.c");
+ADD_SOURCES("Zend\\Optimizer", "zend_optimizer.c pass1.c pass3.c optimize_func_calls.c block_pass.c optimize_temp_vars_5.c nop_removal.c compact_literals.c zend_cfg.c zend_dfg.c dfa_pass.c zend_ssa.c zend_inference.c zend_func_info.c zend_call_graph.c zend_dump.c escape_analysis.c compact_vars.c dce.c sccp.c scdf.c");
ADD_FLAG("CFLAGS_BD_ZEND", "/D ZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
if (VS_TOOLSET && VCVERS >= 1914) {
@@ -277,6 +278,7 @@ if (VS_TOOLSET && VCVERS >= 1914) {
}
PHP_INSTALL_HEADERS("", "Zend/ TSRM/ main/ main/streams/ win32/");
+PHP_INSTALL_HEADERS("Zend/Optimizer", "zend_call_graph.h zend_cfg.h zend_dump.h zend_func_info.h zend_inference.h zend_optimizer.h zend_ssa.h");
STDOUT.WriteBlankLines(1);