Lines Matching refs:scdf

80 	scdf_ctx scdf;  member
150 static void set_value(scdf_ctx *scdf, sccp_ctx *ctx, int var, zval *new) { in set_value() argument
158 zend_dump_var(scdf->op_array, IS_CV, scdf->ssa->vars[var].var); in set_value()
169 scdf_add_to_worklist(scdf, var); in set_value()
179 scdf_add_to_worklist(scdf, var); in set_value()
191 return CT_CONSTANT_EX(ctx->scdf.op_array, opline->op1.constant); in get_op1_value()
201 return CT_CONSTANT_EX(ctx->scdf.op_array, opline->op2.constant); in get_op2_value()
293 if (ssa_op->op1_use == var && can_replace_op1(ctx->scdf.op_array, opline, ssa_op)) { in try_replace_op1()
296 if (zend_optimizer_update_op1_const(ctx->scdf.op_array, opline, &zv)) { in try_replace_op1()
310 opline->op1.constant = zend_optimizer_add_literal(ctx->scdf.op_array, &zv); in try_replace_op1()
318 opline->op1.constant = zend_optimizer_add_literal(ctx->scdf.op_array, &zv); in try_replace_op1()
322 zend_ssa_unlink_use_chain(ctx->scdf.ssa, ssa_op - ctx->scdf.ssa->ops, ssa_op->op2_use); in try_replace_op1()
338 if (ssa_op->op2_use == var && can_replace_op2(ctx->scdf.op_array, opline, ssa_op)) { in try_replace_op2()
341 if (zend_optimizer_update_op2_const(ctx->scdf.op_array, opline, &zv)) { in try_replace_op2()
349 if (zend_optimizer_update_op2_const(ctx->scdf.op_array, opline + 1, &zv)) { in try_replace_op2()
351 zend_ssa_unlink_use_chain(ctx->scdf.ssa, next_op - ctx->scdf.ssa->ops, next_op->op2_use); in try_replace_op2()
354 zend_ssa_remove_result_def(ctx->scdf.ssa, ssa_op); in try_replace_op2()
1059 set_value(scdf, ctx, ssa_op->op##_def, zv); \
1067 static void sccp_visit_instr(scdf_ctx *scdf, zend_op *opline, zend_ssa_op *ssa_op) { in sccp_visit_instr() argument
1068 sccp_ctx *ctx = (sccp_ctx *) scdf; in sccp_visit_instr()
1078 if (IS_BOT(op1) && (ctx->scdf.ssa->var_info[ssa_op->op1_use].type & MAY_BE_REF)) { in sccp_visit_instr()
1090 uint32_t type = ctx->scdf.ssa->var_info[ssa_op->op1_use].type; in sccp_visit_instr()
1109 if ((ctx->scdf.ssa->var_info[ssa_op->op1_use].type & MAY_BE_ANY) == 0) { in sccp_visit_instr()
1198 && ctx->scdf.ssa->vars[ssa_op->op1_def].escape_state == ESCAPE_STATE_NO_ESCAPE) { in sccp_visit_instr()
1200 zend_ssa_var_info *var_info = &ctx->scdf.ssa->var_info[ssa_op->op1_use]; in sccp_visit_instr()
1290 call = ctx->call_map[opline - ctx->scdf.op_array->opcodes]; in sccp_visit_instr()
1297 ssa_op = &ctx->scdf.ssa->ops[opline - ctx->scdf.op_array->opcodes]; in sccp_visit_instr()
1426 && ctx->scdf.ssa->vars[ssa_op->result_def].escape_state == ESCAPE_STATE_NO_ESCAPE) { in sccp_visit_instr()
1552 && ctx->scdf.ssa->vars[ssa_op->op1_def].escape_state == ESCAPE_STATE_NO_ESCAPE) { in sccp_visit_instr()
1603 && ctx->scdf.ssa->vars[ssa_op->op1_def].escape_state == ESCAPE_STATE_NO_ESCAPE) { in sccp_visit_instr()
1850 call = ctx->call_map[opline - ctx->scdf.op_array->opcodes]; in sccp_visit_instr()
1851 name = CT_CONSTANT_EX(ctx->scdf.op_array, call->caller_init_opline->op2.constant); in sccp_visit_instr()
1872 &ctx->scdf.ssa->ops[opline - ctx->scdf.op_array->opcodes]); in sccp_visit_instr()
1920 scdf_ctx *scdf, in sccp_mark_feasible_successors() argument
1923 sccp_ctx *ctx = (sccp_ctx *) scdf; in sccp_mark_feasible_successors()
1933 scdf_mark_edge_feasible(scdf, block_num, block->successors[0]); in sccp_mark_feasible_successors()
1934 scdf_mark_edge_feasible(scdf, block_num, block->successors[1]); in sccp_mark_feasible_successors()
1943 scdf_mark_edge_feasible(scdf, block_num, block->successors[s]); in sccp_mark_feasible_successors()
1959 scdf_mark_edge_feasible(scdf, block_num, block->successors[0]); in sccp_mark_feasible_successors()
1960 scdf_mark_edge_feasible(scdf, block_num, block->successors[1]); in sccp_mark_feasible_successors()
1971 scdf_mark_edge_feasible(scdf, block_num, block->successors[0]); in sccp_mark_feasible_successors()
1972 scdf_mark_edge_feasible(scdf, block_num, block->successors[1]); in sccp_mark_feasible_successors()
1987 scdf_mark_edge_feasible(scdf, block_num, block->successors[0]); in sccp_mark_feasible_successors()
1988 scdf_mark_edge_feasible(scdf, block_num, block->successors[1]); in sccp_mark_feasible_successors()
1995 zend_op_array *op_array = scdf->op_array; in sccp_mark_feasible_successors()
1996 zend_ssa *ssa = scdf->ssa; in sccp_mark_feasible_successors()
2006 scdf_mark_edge_feasible(scdf, block_num, target); in sccp_mark_feasible_successors()
2013 zend_op_array *op_array = scdf->op_array; in sccp_mark_feasible_successors()
2014 zend_ssa *ssa = scdf->ssa; in sccp_mark_feasible_successors()
2024 scdf_mark_edge_feasible(scdf, block_num, target); in sccp_mark_feasible_successors()
2031 scdf_mark_edge_feasible(scdf, block_num, block->successors[s]); in sccp_mark_feasible_successors()
2035 scdf_mark_edge_feasible(scdf, block_num, block->successors[s]); in sccp_mark_feasible_successors()
2126 static void sccp_visit_phi(scdf_ctx *scdf, zend_ssa_phi *phi) { in sccp_visit_phi() argument
2127 sccp_ctx *ctx = (sccp_ctx *) scdf; in sccp_visit_phi()
2128 zend_ssa *ssa = scdf->ssa; in sccp_visit_phi()
2142 if (scdf_is_edge_feasible(scdf, phi->pi, phi->block)) { in sccp_visit_phi()
2148 if (scdf_is_edge_feasible(scdf, predecessors[i], phi->block)) { in sccp_visit_phi()
2165 set_value(scdf, ctx, phi->ssa_var, &result); in sccp_visit_phi()
2171 zend_ssa *ssa = ctx->scdf.ssa; in value_from_type_and_range()
2174 if (ssa->vars[var_num].var >= ctx->scdf.op_array->last_var) { in value_from_type_and_range()
2213 zend_ssa *ssa = ctx->scdf.ssa; in remove_call()
2214 zend_op_array *op_array = ctx->scdf.op_array; in remove_call()
2252 zend_ssa *ssa = ctx->scdf.ssa; in try_remove_definition()
2253 zend_op_array *op_array = ctx->scdf.op_array; in try_remove_definition()
2306 zend_optimizer_update_op1_const(ctx->scdf.op_array, opline, value); in try_remove_definition()
2429 zend_ssa *ssa = ctx->scdf.ssa; in replace_constant_operands()
2430 zend_op_array *op_array = ctx->scdf.op_array; in replace_constant_operands()
2521 for (i = sccp->scdf.op_array->last_var; i < sccp->scdf.ssa->vars_count; ++i) { in sccp_context_free()
2534 sccp.scdf.handlers.visit_instr = sccp_visit_instr; in sccp_optimize_op_array()
2535 sccp.scdf.handlers.visit_phi = sccp_visit_phi; in sccp_optimize_op_array()
2536 sccp.scdf.handlers.mark_feasible_successors = sccp_mark_feasible_successors; in sccp_optimize_op_array()
2538 scdf_init(ctx, &sccp.scdf, op_array, ssa); in sccp_optimize_op_array()
2539 scdf_solve(&sccp.scdf, "SCCP"); in sccp_optimize_op_array()
2564 removed_ops += scdf_remove_unreachable_blocks(&sccp.scdf); in sccp_optimize_op_array()