Lines Matching refs:i

70 	int i, *predecessors = &cfg->predecessors[block->predecessor_offset];  in is_in_predecessors()  local
71 for (i = 0; i < block->predecessors_count; i++) { in is_in_predecessors()
72 if (predecessors[i] == check) { in is_in_predecessors()
104 #define VAR(i) \ 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]) : "")
109 #define INSTR(i) \ argument
110 (i), (zend_get_opcode_name(op_array->opcodes[i].opcode))
115 int i, status = SUCCESS; in ssa_verify_integrity() local
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()
123 if (var->definition < 0 && !var->definition_phi && i > op_array->last_var) { in ssa_verify_integrity()
125 FAIL("var " VARFMT " without def has op uses\n", VAR(i)); in ssa_verify_integrity()
128 FAIL("var " VARFMT " without def has phi uses\n", VAR(i)); in ssa_verify_integrity()
132 FAIL("var " VARFMT " has both def and def_phi\n", VAR(i)); in ssa_verify_integrity()
135 if (!is_defined_by_op(ssa, var->definition, i)) { in ssa_verify_integrity()
137 VAR(i), INSTR(var->definition)); in ssa_verify_integrity()
141 if (var->definition_phi->ssa_var != i) { in ssa_verify_integrity()
142 FAIL("var " VARFMT " not defined by given phi\n", VAR(i)); in ssa_verify_integrity()
149 FAIL("cycle in uses of " VARFMT "\n", VAR(i)); in ssa_verify_integrity()
152 if (!is_used_by_op(ssa, use, i)) { in ssa_verify_integrity()
153 fprintf(stderr, "var " VARFMT " not in uses of op %d\n", VAR(i), use); in ssa_verify_integrity()
160 FAIL("cycle in phi uses of " VARFMT "\n", VAR(i)); in ssa_verify_integrity()
163 if (!is_in_phi_sources(ssa, phi, i)) { in ssa_verify_integrity()
164 FAIL("var " VARFMT " not in phi sources of %d\n", VAR(i), phi->ssa_var); in ssa_verify_integrity()
169 FAIL("var " VARFMT " has array key type but not value type\n", VAR(i)); in ssa_verify_integrity()
172 FAIL("var " VARFMT " has array value type but not key type\n", VAR(i)); in ssa_verify_integrity()
177 FOREACH_INSTR_NUM(i) { in ssa_verify_integrity()
178 zend_ssa_op *ssa_op = &ssa->ops[i]; in ssa_verify_integrity()
179 zend_op *opline = &op_array->opcodes[i]; in ssa_verify_integrity()
182 FAIL("var op1 of " INSTRFMT " does not use/def an ssa var\n", INSTR(i)); in ssa_verify_integrity()
186 FAIL("non-var op1 of " INSTRFMT " uses or defs an ssa var\n", INSTR(i)); in ssa_verify_integrity()
191 FAIL("var op2 of " INSTRFMT " does not use/def an ssa var\n", INSTR(i)); in ssa_verify_integrity()
195 FAIL("non-var op2 of " INSTRFMT " uses or defs an ssa var\n", INSTR(i)); in ssa_verify_integrity()
200 FAIL("var result of " INSTRFMT " does not use/def an ssa var\n", INSTR(i)); in ssa_verify_integrity()
204 FAIL("non-var result of " INSTRFMT " uses or defs an ssa var\n", INSTR(i)); in ssa_verify_integrity()
212 if (!is_in_use_chain(ssa, ssa_op->op1_use, i)) { in ssa_verify_integrity()
214 VAR(ssa_op->op1_use), INSTR(i)); in ssa_verify_integrity()
218 VAR(ssa_op->op1_use), VAR_NUM(opline->op1.var), INSTR(i)); in ssa_verify_integrity()
225 if (!is_in_use_chain(ssa, ssa_op->op2_use, i)) { in ssa_verify_integrity()
227 VAR(ssa_op->op2_use), INSTR(i)); in ssa_verify_integrity()
231 VAR(ssa_op->op2_use), VAR_NUM(opline->op2.var), INSTR(i)); in ssa_verify_integrity()
238 if (!is_in_use_chain(ssa, ssa_op->result_use, i)) { in ssa_verify_integrity()
240 VAR(ssa_op->result_use), INSTR(i)); in ssa_verify_integrity()
244 VAR(ssa_op->result_use), VAR_NUM(opline->result.var), INSTR(i)); in ssa_verify_integrity()
251 if (ssa->vars[ssa_op->op1_def].definition != i) { in ssa_verify_integrity()
253 VAR(ssa_op->op1_def), INSTR(i)); in ssa_verify_integrity()
257 VAR(ssa_op->op1_def), VAR_NUM(opline->op1.var), INSTR(i)); in ssa_verify_integrity()
264 if (ssa->vars[ssa_op->op2_def].definition != i) { in ssa_verify_integrity()
266 VAR(ssa_op->op2_def), INSTR(i)); in ssa_verify_integrity()
270 VAR(ssa_op->op2_def), VAR_NUM(opline->op2.var), INSTR(i)); in ssa_verify_integrity()
277 if (ssa->vars[ssa_op->result_def].definition != i) { in ssa_verify_integrity()
279 VAR(ssa_op->result_def), INSTR(i)); in ssa_verify_integrity()
283 VAR(ssa_op->result_def), VAR_NUM(opline->result.var), INSTR(i)); in ssa_verify_integrity()
291 for (i = 0; i < num_sources; i++) { in ssa_verify_integrity()
292 int source = phi->sources[i]; in ssa_verify_integrity()
302 if (phi->use_chains[i]) { in ssa_verify_integrity()
304 for (j = i + 1; j < num_sources; j++) { in ssa_verify_integrity()
318 for (i = 0; i < cfg->blocks_count; i++) { in ssa_verify_integrity()
319 zend_basic_block *block = &cfg->blocks[i]; in ssa_verify_integrity()
323 if (i != 0 && block->start < (block-1)->start + (block-1)->len) { in ssa_verify_integrity()
325 i, block->start, (block-1)->start + (block-1)->len); in ssa_verify_integrity()
327 if (i != cfg->blocks_count-1 && block->start + block->len > (block+1)->start) { in ssa_verify_integrity()
329 i, block->start + block->len, (block+1)->start); in ssa_verify_integrity()
333 if (cfg->map[j] != i) { in ssa_verify_integrity()
334 FAIL("Instr " INSTRFMT " not associated with block %d\n", INSTR(j), i); in ssa_verify_integrity()
339 if (ssa->blocks[i].phis) { in ssa_verify_integrity()
340 FAIL("Unreachable block %d has phis\n", i); in ssa_verify_integrity()
348 FAIL("Successor number %d of %d negative", s, i); in ssa_verify_integrity()
352 FAIL("Successor %d of %d not reachable\n", block->successors[s], i); in ssa_verify_integrity()
354 if (!is_in_predecessors(cfg, next_block, i)) { in ssa_verify_integrity()
355 FAIL("Block %d predecessors missing %d\n", block->successors[s], i); in ssa_verify_integrity()
364 FAIL("Predecessor %d of %d not reachable\n", predecessors[j], i); in ssa_verify_integrity()
366 if (!is_in_successors(prev_block, i)) { in ssa_verify_integrity()
367 FAIL("Block %d successors missing %d\n", predecessors[j], i); in ssa_verify_integrity()
371 FAIL("Block %d has duplicate predecessor %d\n", i, predecessors[j]); in ssa_verify_integrity()