Home
last modified time | relevance | path

Searched refs:ssa (Results 1 – 24 of 24) sorted by relevance

/PHP-8.1/Zend/Optimizer/
H A Ddfa_pass.c177 ssa->ops[target] = ssa->ops[i]; in zend_ssa_remove_nops()
219 ssa->vars[j].use_chain -= shiftlist[ssa->vars[j].use_chain]; in zend_ssa_remove_nops()
377 && zend_may_throw(opline, &ssa->ops[ssa->vars[src_var].definition], op_array, ssa)) { in opline_supports_assign_contraction()
1275 ssa->ops[op_1].op1_use = ssa->ops[op_1].op2_use; in zend_dfa_optimize_op_array()
1295 ssa->ops[op_1].op1_use = ssa->ops[op_1].op2_use; in zend_dfa_optimize_op_array()
1340 ssa->ops[op_1].op2_use = ssa->ops[op_1].op1_use; in zend_dfa_optimize_op_array()
1483 ssa->ops[op_2].op1_use = ssa->ops[op_2].op2_use; in zend_dfa_optimize_op_array()
1638 ssa->ops[op_2].op1_use = ssa->ops[op_2].op2_use; in zend_dfa_optimize_op_array()
1661 ssa->ops[op_1].op1_use = ssa->ops[op_1].op2_use; in zend_dfa_optimize_op_array()
1717 ssa->ops[op_1].result_def = ssa->ops[op_1].op1_def; in zend_dfa_optimize_op_array()
[all …]
H A Ddce.c50 zend_ssa *ssa; member
319 zend_ssa *ssa = ctx->ssa; in add_phi_sources_to_worklists() local
415 zend_ssa *ssa = ctx->ssa; in dce_instr() local
461 ssa->vars[free_var].use_chain = ssa_op - ssa->ops; in dce_instr()
488 zend_ssa *ssa = ctx->ssa; in try_remove_trivial_phi() local
536 ctx.ssa = ssa; in dce_optimize_op_array()
588 add_operands_to_worklists(&ctx, &op_array->opcodes[i], &ssa->ops[i], ssa, 0); in dce_optimize_op_array()
593 || (zend_may_throw(&op_array->opcodes[i], &ssa->ops[i], op_array, ssa) in dce_optimize_op_array()
595 || (has_varargs && may_break_varargs(op_array, ssa, &ssa->ops[i]))) { in dce_optimize_op_array()
603 add_operands_to_worklists(&ctx, &op_array->opcodes[i], &ssa->ops[i], ssa, 0); in dce_optimize_op_array()
[all …]
H A Dzend_inference.h46 ssa->var_info && \
48 ssa->var_info[ssa_op->opN##_use].has_range); \
68 ssa->var_info && \
70 ssa->var_info[ssa_op->opN##_use].has_range) { \
91 ssa->var_info && \
108 ssa->var_info && \
125 ssa->var_info && \
196 if (ssa->var_info && ssa_var_num >= 0) { in get_ssa_var_info()
197 return ssa->var_info[ssa_var_num].type; in get_ssa_var_info()
209 return get_ssa_var_info(ssa, ssa->var_info ? ssa_op->opN##_use : -1); \
[all …]
H A Dscdf.c84 scdf->ssa = ssa; in scdf_init()
104 zend_ssa *ssa = scdf->ssa; in scdf_solve() local
120 int block_num = ssa->cfg.map[i]; in scdf_solve()
124 zend_ssa_op *ssa_op = &ssa->ops[i]; in scdf_solve()
210 const zend_cfg *cfg = &scdf->ssa->cfg; in kept_alive_by_loop_var_free()
224 zend_ssa *ssa = scdf->ssa; in cleanup_loop_var_free_block() local
226 const zend_cfg *cfg = &ssa->cfg; in cleanup_loop_var_free_block()
233 zend_ssa_remove_phi(ssa, phi); in cleanup_loop_var_free_block()
238 zend_ssa_op *ssa_op = &scdf->ssa->ops[i]; in cleanup_loop_var_free_block()
246 zend_ssa_remove_defs_of_instr(ssa, ssa_op); in cleanup_loop_var_free_block()
[all …]
H A Dzend_ssa.h179 zend_ssa_var *var = &ssa->vars[ssa_op->op1_def]; in zend_ssa_remove_op1_def()
186 zend_ssa_var *var = &ssa->vars[ssa_op->op2_def]; in zend_ssa_remove_op2_def()
245 ssa->vars[ssa_op->op1_def].definition = -1; in zend_ssa_rename_defs_of_instr()
252 ssa->vars[ssa_op->op2_def].definition = -1; in zend_ssa_rename_defs_of_instr()
259 ssa->vars[ssa_op->result_def].definition = -1; in zend_ssa_rename_defs_of_instr()
270 int _var_num = (var) - ssa->vars, next; \
278 int _var_num = (var) - ssa->vars; \
298 for (_i = 0; _i < ssa->cfg.blocks_count; _i++) { \
299 phi = ssa->blocks[_i].phis; \
308 for (_i = 0; _i < ssa->cfg.blocks_count; _i++) { \
[all …]
H A Dzend_ssa.c1063 if (!ssa->vars) { in zend_ssa_compute_use_def_chains()
1181 ssa->vars[var].use_chain = zend_ssa_next_use(ssa->ops, var, op); in zend_ssa_unlink_use_chain()
1189 ssa->ops[use].res_use_chain = zend_ssa_next_use(ssa->ops, var, op); in zend_ssa_unlink_use_chain()
1196 ssa->ops[use].op1_use_chain = zend_ssa_next_use(ssa->ops, var, op); in zend_ssa_unlink_use_chain()
1228 zend_ssa_unlink_use_chain(ssa, ssa_op - ssa->ops, ssa_op->op1_use); in zend_ssa_remove_instr()
1236 zend_ssa_unlink_use_chain(ssa, ssa_op - ssa->ops, ssa_op->op2_use); in zend_ssa_remove_instr()
1460 zend_ssa_remove_defs_of_instr(ssa, &ssa->ops[j]); in zend_ssa_remove_block()
1461 zend_ssa_remove_instr(ssa, &op_array->opcodes[j], &ssa->ops[j]); in zend_ssa_remove_block()
1525 if (ssa->var_info[var].type & ~ssa->var_info[phi->ssa_var].type) { in propagate_phi_type_widening()
1526 ssa->var_info[phi->ssa_var].type |= ssa->var_info[var].type; in propagate_phi_type_widening()
[all …]
H A Dssa_integrity.c26 FOREACH_USE(&ssa->vars[var], use) { in is_in_use_chain()
36 FOREACH_PHI_USE(&ssa->vars[var], phi) { in is_in_phi_use_chain()
45 zend_ssa_op *ssa_op = &ssa->ops[op]; in is_used_by_op()
52 zend_ssa_op *ssa_op = &ssa->ops[op]; in is_defined_by_op()
105 (ssa->vars[i].var < op_array->last_var ? ZSTR_VAL(op_array->vars[ssa->vars[i].var]) : "")
112 zend_cfg *cfg = &ssa->cfg; in ssa_verify_integrity()
118 zend_ssa_var *var = &ssa->vars[i]; in ssa_verify_integrity()
151 if (!is_used_by_op(ssa, use, i)) { in ssa_verify_integrity()
177 zend_ssa_op *ssa_op = &ssa->ops[i]; in ssa_verify_integrity()
298 if (ssa->vars[source].var != ssa->vars[phi->ssa_var].var) { in ssa_verify_integrity()
[all …]
H A Dzend_inference.c207 ssa->vars[var2].scc = ssa->sccs;
210 ssa->vars[var].scc = ssa->sccs;
229 ssa->sccs = ssa->vars_count;
240 ssa->vars[j].scc -= ssa->sccs;
244 ssa->sccs = ssa->vars_count - ssa->sccs;
432 ssa->vars[var2].scc = ssa->sccs; in zend_ssa_check_scc_var()
435 ssa->vars[var].scc = ssa->sccs; in zend_ssa_check_scc_var()
459 ssa->sccs = ssa->vars_count; in zend_ssa_find_sccs()
470 ssa->vars[j].scc -= ssa->sccs; in zend_ssa_find_sccs()
474 ssa->sccs = ssa->vars_count - ssa->sccs; in zend_ssa_find_sccs()
[all …]
H A Dzend_func_info.c52 static uint32_t zend_range_info(const zend_call_info *call_info, const zend_ssa *ssa) in zend_range_info() argument
56 && ssa in zend_range_info()
57 && !(ssa->cfg.flags & ZEND_SSA_TSSA)) { in zend_range_info()
59 uint32_t t1 = _ssa_op1_info(op_array, ssa, call_info->arg_info[0].opline, in zend_range_info()
60 &ssa->ops[call_info->arg_info[0].opline - op_array->opcodes]); in zend_range_info()
61 uint32_t t2 = _ssa_op1_info(op_array, ssa, call_info->arg_info[1].opline, in zend_range_info()
62 &ssa->ops[call_info->arg_info[1].opline - op_array->opcodes]); in zend_range_info()
67 t3 = _ssa_op1_info(op_array, ssa, call_info->arg_info[2].opline, in zend_range_info()
68 &ssa->ops[call_info->arg_info[2].opline - op_array->opcodes]); in zend_range_info()
121 return call_info ? info->info_func(call_info, ssa) : 0; in zend_get_internal_func_info()
[all …]
H A Descape_analysis.c78 zend_ssa_var *ssa_vars = ssa->vars; in zend_build_equi_escape_sets()
79 int ssa_vars_count = ssa->vars_count; in zend_build_equi_escape_sets()
103 zend_ssa_op *op = ssa->ops + def; in zend_build_equi_escape_sets()
152 zend_ssa_op *ssa_op = ssa->ops + def; in is_allocation_def()
217 zend_ssa_op *op = ssa->ops + def; in is_local_def()
261 zend_ssa_op *ssa_op = ssa->ops + use; in is_escape_use()
372 zend_ssa_var *ssa_vars = ssa->vars; in zend_ssa_escape_analysis()
373 int ssa_vars_count = ssa->vars_count; in zend_ssa_escape_analysis()
387 && (ssa->var_info[i].type & (MAY_BE_ARRAY|MAY_BE_OBJECT)) in zend_ssa_escape_analysis()
441 if (is_escape_use(op_array, ssa, use, i)) { in zend_ssa_escape_analysis()
[all …]
H A Dscdf.h26 zend_ssa *ssa; member
49 void scdf_init(zend_optimizer_ctx *ctx, scdf_ctx *scdf, zend_op_array *op_array, zend_ssa *ssa);
56 zend_ssa *ssa = scdf->ssa; in scdf_add_to_worklist() local
57 zend_ssa_var *var = &ssa->vars[var_num]; in scdf_add_to_worklist()
70 zend_ssa_var *var = &scdf->ssa->vars[var_num]; in scdf_add_def_to_worklist()
93 uint32_t edge = scdf_edge(&scdf->ssa->cfg, from, to); in scdf_is_edge_feasible()
H A Dzend_dump.c367 if (ssa->var_info) { in zend_dump_ssa_var()
739 const zend_ssa *ssa = NULL; in zend_dump_op_line() local
750 ssa = (const zend_ssa*)data; in zend_dump_op_line()
751 if (ssa && ssa->ops) { in zend_dump_op_line()
861 if (ssa && ssa->blocks && ssa->blocks[n].phis) { in zend_dump_block_header()
911 const zend_ssa *ssa = NULL; in zend_dump_op_array() local
922 ssa = (const zend_ssa*)data; in zend_dump_op_array()
936 if (ssa) { in zend_dump_op_array()
994 if (ssa && ssa->var_info) { in zend_dump_op_array()
1174 if (ssa->vars) { in zend_dump_ssa_variables()
[all …]
H A Dzend_dump.h35 …asic_block *b, const zend_op *opline, uint32_t dump_flags, const zend_ssa *ssa, const zend_ssa_op …
39 void zend_dump_phi_placement(const zend_op_array *op_array, const zend_ssa *ssa);
41 void zend_dump_ssa_variables(const zend_op_array *op_array, const zend_ssa *ssa, uint32_t dump_flag…
42 ZEND_API void zend_dump_ssa_var(const zend_op_array *op_array, const zend_ssa *ssa, int ssa_var_num…
H A Dsccp.c329 zend_ssa_unlink_use_chain(ctx->scdf.ssa, ssa_op - ctx->scdf.ssa->ops, ssa_op->op2_use); in try_replace_op1()
358 zend_ssa_unlink_use_chain(ctx->scdf.ssa, next_op - ctx->scdf.ssa->ops, next_op->op2_use); in try_replace_op2()
1956 zend_ssa *ssa = scdf->ssa; in sccp_mark_feasible_successors() local
1972 zend_ssa *ssa = scdf->ssa; in sccp_mark_feasible_successors() local
2079 zend_ssa *ssa = scdf->ssa; in sccp_visit_phi() local
2122 zend_ssa *ssa = ctx->scdf.ssa; in value_from_type_and_range() local
2162 zend_ssa *ssa = ctx->scdf.ssa; in remove_call() local
2201 zend_ssa *ssa = ctx->scdf.ssa; in try_remove_definition() local
2436 zend_ssa *ssa = ctx->scdf.ssa; in replace_constant_operands() local
2517 for (; i < ssa->vars_count; ++i) { in sccp_context_init()
[all …]
H A Dzend_func_info.h60 const zend_function *callee_func, const zend_call_info *call_info, const zend_ssa *ssa);
62 const zend_call_info *call_info, const zend_ssa *ssa,
H A Dzend_optimizer_internal.h106 int zend_dfa_analyze_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx, zend_ssa *ssa);
107 void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx, zend_ssa *ssa, ze…
117 int sccp_optimize_op_array(zend_optimizer_ctx *ctx, zend_op_array *op_array, zend_ssa *ssa, zend_ca…
118 int dce_optimize_op_array(zend_op_array *op_array, zend_ssa *ssa, bool reorder_dtor_effects);
119 int zend_ssa_escape_analysis(const zend_script *script, zend_op_array *op_array, zend_ssa *ssa);
H A Dzend_call_graph.h48 zend_ssa ssa; /* Static Single Assignment Form */ member
H A Dzend_optimizer.c1150 static void zend_redo_pass_two_ex(zend_op_array *op_array, zend_ssa *ssa) in zend_redo_pass_two_ex() argument
1179 zend_ssa_op *ssa_op = &ssa->ops[opline - op_array->opcodes]; in zend_redo_pass_two_ex()
1331 zend_ssa_op *ssa_op = &func_info->ssa.ops[def_opline - op_array->opcodes]; in needs_live_range()
1341 if (func_info->ssa.vars[ssa_var].phi_use_chain) { in needs_live_range()
1342 ssa_var = func_info->ssa.vars[ssa_var].phi_use_chain->ssa_var; in needs_live_range()
1345 uint32_t type = func_info->ssa.var_info[ssa_var].type; in needs_live_range()
1447 if (zend_dfa_analyze_op_array(call_graph.op_arrays[i], &ctx, &func_info->ssa) == SUCCESS) { in zend_optimize_script()
1448 func_info->flags = func_info->ssa.cfg.flags; in zend_optimize_script()
1459 zend_dfa_optimize_op_array(call_graph.op_arrays[i], &ctx, &func_info->ssa, func_info->call_map); in zend_optimize_script()
1505 if (func_info && func_info->ssa.var_info) { in zend_optimize_script()
[all …]
/PHP-8.1/ext/opcache/jit/
H A Dzend_jit.c513 if (ssa->vars && ssa->var_info) { in zend_ssa_cv_info()
904 if (rt_opline && ssa && ssa->cfg.map) { in dasm_link_and_encode()
1038 ssa ? &ssa->cfg : NULL, in dasm_link_and_encode()
1112 if (!ssa->ops || !ssa->var_info) { in zend_may_overflow()
3190 if (ssa->var_info && ssa->ops) { in zend_jit()
3238 if (ssa->var_info && ssa->ops) { in zend_jit()
3279 if (ssa->var_info && ssa->ops) { in zend_jit()
3789 if (ssa->var_info && ssa->ops) { in zend_jit()
3808 if (!ssa->ops || !ssa->var_info) { in zend_jit()
3940 if (ssa->var_info && ssa->ops) { in zend_jit()
[all …]
H A Dzend_jit_trace.c566 ssa = &jit_extension->func_info.ssa; in zend_jit_trace_build_ssa()
1282 ssa = &jit_extension->func_info.ssa; in zend_jit_trace_build_tssa()
1300 ssa = &jit_extension->func_info.ssa; in zend_jit_trace_build_tssa()
1523 ssa = &jit_extension->func_info.ssa; in zend_jit_trace_build_tssa()
2304 ssa = &jit_extension->func_info.ssa; in zend_jit_trace_build_tssa()
2375 ssa = &jit_extension->func_info.ssa; in zend_jit_trace_build_tssa()
2527 ssa = &jit_extension->func_info.ssa; in zend_jit_trace_build_tssa()
3600 if (ssa && ssa->vars[i].no_val) { in zend_jit_trace_deoptimization()
3635 if (ssa && ssa->vars[i].no_val) { in zend_jit_trace_deoptimization()
4677 if (ssa->var_info && ssa->ops) { in zend_jit_trace()
[all …]
H A Dzend_jit_x86.dasc15933 …if ((ssa->var_info[def_var].type & ~MAY_BE_GUARD) != (ssa->var_info[use_var].type & ~MAY_BE_GUARD)…
16025 if (!ssa->cfg.map) {
16028 … if (opline > op_array->opcodes + ssa->cfg.blocks[ssa->cfg.map[opline-op_array->opcodes]].start &&
16061 if (ssa->vars[var].no_val) {
16073 if (ssa->vars[var].phi_use_chain) {
16101 if (!zend_jit_opline_supports_reg(op_array, ssa, op_array->opcodes + def, ssa->ops + def, NULL)) {
16111 … !zend_jit_opline_supports_reg(op_array, ssa, op_array->opcodes + use, ssa->ops + use, NULL)) {
16465 if (ssa_op == ssa->ops
16475 if (ssa_op == ssa->ops
16487 uint32_t b = ssa->cfg.map[ssa_op - ssa->ops];
[all …]
H A Dzend_jit_arm64.dasc14980 …if ((ssa->var_info[def_var].type & ~MAY_BE_GUARD) != (ssa->var_info[use_var].type & ~MAY_BE_GUARD)…
15074 if (!ssa->cfg.map) {
15077 … if (opline > op_array->opcodes + ssa->cfg.blocks[ssa->cfg.map[opline-op_array->opcodes]].start &&
15110 if (ssa->vars[var].no_val) {
15119 if (ssa->vars[var].definition_phi) {
15122 if (ssa->vars[var].phi_use_chain) {
15150 if (!zend_jit_opline_supports_reg(op_array, ssa, op_array->opcodes + def, ssa->ops + def, NULL)) {
15155 if (ssa->vars[var].use_chain >= 0) {
15156 int use = ssa->vars[var].use_chain;
15160 … !zend_jit_opline_supports_reg(op_array, ssa, op_array->opcodes + use, ssa->ops + use, NULL)) {
[all …]
H A Dzend_jit_internal.h157 zend_ival_is_last_use(ra[ssa_op->op], ssa_op - ssa->ops) \
/PHP-8.1/ext/opcache/tests/opt/
H A Dnullsafe_002.phpt2 Nullsafe e-ssa pi node placement

Completed in 180 milliseconds