Lines Matching refs:ssa_op

121 static zval *get_op1_value(sccp_ctx *ctx, zend_op *opline, zend_ssa_op *ssa_op) {  in get_op1_value()  argument
124 } else if (ssa_op->op1_use != -1) { in get_op1_value()
125 return &ctx->values[ssa_op->op1_use]; in get_op1_value()
131 static zval *get_op2_value(sccp_ctx *ctx, zend_op *opline, zend_ssa_op *ssa_op) { in get_op2_value() argument
134 } else if (ssa_op->op2_use != -1) { in get_op2_value()
135 return &ctx->values[ssa_op->op2_use]; in get_op2_value()
142 const zend_op_array *op_array, zend_op *opline, zend_ssa_op *ssa_op) { in can_replace_op1() argument
208 if (ssa_op->op1_def != -1) { in can_replace_op1()
218 const zend_op_array *op_array, zend_op *opline, zend_ssa_op *ssa_op) { in can_replace_op2() argument
233 sccp_ctx *ctx, zend_op *opline, zend_ssa_op *ssa_op, int var, zval *value) { in try_replace_op1() argument
234 if (ssa_op->op1_use == var && can_replace_op1(ctx->scdf.op_array, opline, ssa_op)) { in try_replace_op1()
347 sccp_ctx *ctx, zend_op *opline, zend_ssa_op *ssa_op, int var, zval *value) { in try_replace_op2() argument
348 if (ssa_op->op2_use == var && can_replace_op2(ctx->scdf.op_array, opline, ssa_op)) { in try_replace_op2()
861 if (ssa_op->op##_def >= 0) { \
862 set_value(scdf, ctx, ssa_op->op##_def, zv); \
870 static void sccp_visit_instr(scdf_ctx *scdf, zend_op *opline, zend_ssa_op *ssa_op) { in sccp_visit_instr() argument
874 op1 = get_op1_value(ctx, opline, ssa_op); in sccp_visit_instr()
875 op2 = get_op2_value(ctx, opline, ssa_op); in sccp_visit_instr()
881 if (IS_BOT(op1) && (ctx->scdf.ssa->var_info[ssa_op->op1_use].type & MAY_BE_REF)) { in sccp_visit_instr()
893 uint32_t type = ctx->scdf.ssa->var_info[ssa_op->op1_use].type; in sccp_visit_instr()
910 if ((ctx->scdf.ssa->var_info[ssa_op->op1_use].type & MAY_BE_ANY) == 0) { in sccp_visit_instr()
930 ssa_op = &ctx->scdf.ssa->ops[opline - ctx->scdf.op_array->opcodes]; in sccp_visit_instr()
1175 result = &ctx->values[ssa_op->result_use]; in sccp_visit_instr()
1191 if (Z_TYPE(ctx->values[ssa_op->result_def]) == IS_NULL) { in sccp_visit_instr()
1213 zval *data = get_op1_value(ctx, opline+1, ssa_op+1); in sccp_visit_instr()
1253 if (ssa_op->result_def < 0 || IS_BOT(&ctx->values[ssa_op->result_def])) { in sccp_visit_instr()
1283 if (!IS_TOP(&ctx->values[ssa_op->result_def])) { in sccp_visit_instr()
1321 zend_op *opline, zend_ssa_op *ssa_op) { in sccp_mark_feasible_successors() argument
1339 op1 = get_op1_value(ctx, opline, ssa_op); in sccp_mark_feasible_successors()
1501 zend_ssa_op *ssa_op = &ssa->ops[use]; in replace_constant_operands() local
1502 if (try_replace_op1(ctx, opline, ssa_op, i, value)) { in replace_constant_operands()
1506 ZEND_ASSERT(ssa_op->op1_def == -1); in replace_constant_operands()
1507 if (ssa_op->op1_use != ssa_op->op2_use) { in replace_constant_operands()
1508 zend_ssa_unlink_use_chain(ssa, use, ssa_op->op1_use); in replace_constant_operands()
1510 ssa_op->op2_use_chain = ssa_op->op1_use_chain; in replace_constant_operands()
1512 ssa_op->op1_use = -1; in replace_constant_operands()
1513 ssa_op->op1_use_chain = -1; in replace_constant_operands()
1515 if (try_replace_op2(ctx, opline, ssa_op, i, value)) { in replace_constant_operands()
1516 ZEND_ASSERT(ssa_op->op2_def == -1); in replace_constant_operands()
1517 if (ssa_op->op2_use != ssa_op->op1_use) { in replace_constant_operands()
1518 zend_ssa_unlink_use_chain(ssa, use, ssa_op->op2_use); in replace_constant_operands()
1520 ssa_op->op2_use = -1; in replace_constant_operands()
1521 ssa_op->op2_use_chain = -1; in replace_constant_operands()
1539 zend_ssa_op *ssa_op = &ssa->ops[var->definition]; in replace_constant_operands() local
1545 if (ssa_op->result_def == i in replace_constant_operands()
1546 && ssa_op->op1_def < 0 in replace_constant_operands()
1547 && ssa_op->op2_def < 0 in replace_constant_operands()
1562 zend_ssa_remove_result_def(ssa, ssa_op); in replace_constant_operands()
1563 zend_ssa_remove_instr(ssa, opline, ssa_op); in replace_constant_operands()
1580 zend_ssa_remove_result_def(ssa, ssa_op); in replace_constant_operands()
1581 zend_ssa_remove_instr(ssa, opline, ssa_op); in replace_constant_operands()
1584 } else if (ssa_op->op1_def == i && in replace_constant_operands()
1585 (ssa_op->result_def < 0 || in replace_constant_operands()
1586 (ssa->vars[ssa_op->result_def].use_chain < 0 && in replace_constant_operands()
1587 ssa->vars[ssa_op->result_def].phi_use_chain == NULL))) { in replace_constant_operands()
1593 } else if (ssa_op->op2_use >= 0) { in replace_constant_operands()
1594 if (ssa_op->op2_use != ssa_op->op1_use) { in replace_constant_operands()
1595 zend_ssa_unlink_use_chain(ssa, var->definition, ssa_op->op2_use); in replace_constant_operands()
1597 ssa_op->op2_use = -1; in replace_constant_operands()
1598 ssa_op->op2_use_chain = -1; in replace_constant_operands()
1602 if (ssa_op->result_def >= 0) { in replace_constant_operands()
1606 zend_ssa_remove_result_def(ssa, ssa_op); in replace_constant_operands()
1613 zend_ssa_remove_instr(ssa, opline + 1, ssa_op + 1); in replace_constant_operands()