Lines Matching refs:ssa
25 static inline zend_bool is_in_use_chain(zend_ssa *ssa, int var, int check) { in is_in_use_chain() argument
27 FOREACH_USE(&ssa->vars[var], use) { in is_in_use_chain()
35 static inline zend_bool is_in_phi_use_chain(zend_ssa *ssa, int var, zend_ssa_phi *check) { in is_in_phi_use_chain() argument
37 FOREACH_PHI_USE(&ssa->vars[var], phi) { in is_in_phi_use_chain()
45 static inline zend_bool is_used_by_op(zend_ssa *ssa, int op, int check) { in is_used_by_op() argument
46 zend_ssa_op *ssa_op = &ssa->ops[op]; in is_used_by_op()
52 static inline zend_bool is_defined_by_op(zend_ssa *ssa, int op, int check) { in is_defined_by_op() argument
53 zend_ssa_op *ssa_op = &ssa->ops[op]; in is_defined_by_op()
59 static inline zend_bool is_in_phi_sources(zend_ssa *ssa, zend_ssa_phi *phi, int check) { in is_in_phi_sources() argument
105 (i), (ssa->vars[i].var < op_array->last_var ? "CV $" : "TMP"), \
106 (ssa->vars[i].var < op_array->last_var ? ZSTR_VAL(op_array->vars[ssa->vars[i].var]) : "")
112 int ssa_verify_integrity(zend_op_array *op_array, zend_ssa *ssa, const char *extra) { in ssa_verify_integrity() argument
113 zend_cfg *cfg = &ssa->cfg; in ssa_verify_integrity()
118 for (i = 0; i < ssa->vars_count; i++) { in ssa_verify_integrity()
119 zend_ssa_var *var = &ssa->vars[i]; in ssa_verify_integrity()
121 uint32_t type = ssa->var_info[i].type; in ssa_verify_integrity()
135 if (!is_defined_by_op(ssa, var->definition, i)) { in ssa_verify_integrity()
152 if (!is_used_by_op(ssa, use, i)) { in ssa_verify_integrity()
163 if (!is_in_phi_sources(ssa, phi, i)) { in ssa_verify_integrity()
178 zend_ssa_op *ssa_op = &ssa->ops[i]; in ssa_verify_integrity()
209 if (ssa_op->op1_use >= ssa->vars_count) { in ssa_verify_integrity()
212 if (!is_in_use_chain(ssa, ssa_op->op1_use, i)) { in ssa_verify_integrity()
216 if (VAR_NUM(opline->op1.var) != ssa->vars[ssa_op->op1_use].var) { in ssa_verify_integrity()
222 if (ssa_op->op2_use >= ssa->vars_count) { in ssa_verify_integrity()
225 if (!is_in_use_chain(ssa, ssa_op->op2_use, i)) { in ssa_verify_integrity()
229 if (VAR_NUM(opline->op2.var) != ssa->vars[ssa_op->op2_use].var) { in ssa_verify_integrity()
235 if (ssa_op->result_use >= ssa->vars_count) { in ssa_verify_integrity()
238 if (!is_in_use_chain(ssa, ssa_op->result_use, i)) { in ssa_verify_integrity()
242 if (VAR_NUM(opline->result.var) != ssa->vars[ssa_op->result_use].var) { in ssa_verify_integrity()
248 if (ssa_op->op1_def >= ssa->vars_count) { in ssa_verify_integrity()
251 if (ssa->vars[ssa_op->op1_def].definition != i) { in ssa_verify_integrity()
255 if (VAR_NUM(opline->op1.var) != ssa->vars[ssa_op->op1_def].var) { in ssa_verify_integrity()
261 if (ssa_op->op2_def >= ssa->vars_count) { in ssa_verify_integrity()
264 if (ssa->vars[ssa_op->op2_def].definition != i) { in ssa_verify_integrity()
268 if (VAR_NUM(opline->op2.var) != ssa->vars[ssa_op->op2_def].var) { in ssa_verify_integrity()
274 if (ssa_op->result_def >= ssa->vars_count) { in ssa_verify_integrity()
277 if (ssa->vars[ssa_op->result_def].definition != i) { in ssa_verify_integrity()
281 if (VAR_NUM(opline->result.var) != ssa->vars[ssa_op->result_def].var) { in ssa_verify_integrity()
295 if (!is_in_phi_use_chain(ssa, source, phi)) { in ssa_verify_integrity()
298 if (ssa->vars[source].var != ssa->vars[phi->ssa_var].var) { in ssa_verify_integrity()
302 if (ssa->vars[phi->ssa_var].definition_phi != phi) { in ssa_verify_integrity()
329 if (ssa->blocks[i].phis) { in ssa_verify_integrity()