Lines Matching refs:blocks

29 	zend_basic_block *blocks = cfg->blocks;  in zend_mark_reachable()  local
41 zend_basic_block *succ = blocks + b->successors[i]; in zend_mark_reachable()
110 zend_basic_block *blocks = cfg->blocks; in zend_mark_reachable_blocks() local
112 blocks[start].flags = ZEND_BB_START; in zend_mark_reachable_blocks()
113 zend_mark_reachable(op_array->opcodes, cfg, blocks + start); in zend_mark_reachable_blocks()
127 b = blocks + block_map[op_array->try_catch_array[j].try_op]; in zend_mark_reachable_blocks()
132 end = blocks + block_map[op_array->try_catch_array[j].catch_op]; in zend_mark_reachable_blocks()
141 b = blocks + block_map[op_array->try_catch_array[j].try_op]; in zend_mark_reachable_blocks()
144 end = blocks + block_map[op_array->try_catch_array[j].finally_op]; in zend_mark_reachable_blocks()
149 …zend_mark_reachable(op_array->opcodes, cfg, blocks + block_map[op_array->try_catch_array[j].try_op… in zend_mark_reachable_blocks()
158 b = blocks + block_map[op_array->try_catch_array[j].try_op]; in zend_mark_reachable_blocks()
162 b = blocks + block_map[op_array->try_catch_array[j].catch_op]; in zend_mark_reachable_blocks()
170 b = blocks + block_map[op_array->try_catch_array[j].finally_op]; in zend_mark_reachable_blocks()
178 b = blocks + block_map[op_array->try_catch_array[j].finally_end]; in zend_mark_reachable_blocks()
187 …ZEND_ASSERT(!(blocks[block_map[op_array->try_catch_array[j].catch_op]].flags & ZEND_BB_REACHABLE)); in zend_mark_reachable_blocks()
190 …ZEND_ASSERT(!(blocks[block_map[op_array->try_catch_array[j].finally_op]].flags & ZEND_BB_REACHABLE… in zend_mark_reachable_blocks()
193 …ZEND_ASSERT(!(blocks[block_map[op_array->try_catch_array[j].finally_end]].flags & ZEND_BB_REACHABL… in zend_mark_reachable_blocks()
206 for (b = blocks; b < blocks + cfg->blocks_count; b++) { in zend_mark_reachable_blocks()
217 if (blocks[def_block].flags & ZEND_BB_REACHABLE) { in zend_mark_reachable_blocks()
231 zend_basic_block *blocks = cfg->blocks; in zend_cfg_remark_reachable_blocks() local
236 if (blocks[i].flags & ZEND_BB_REACHABLE) { in zend_cfg_remark_reachable_blocks()
245 blocks[i].flags = 0; in zend_cfg_remark_reachable_blocks()
278 zend_basic_block *blocks; in zend_build_cfg() local
471 cfg->blocks = blocks = zend_arena_calloc(arena, sizeof(zend_basic_block), blocks_count); in zend_build_cfg()
476 initialize_block(&blocks[0]); in zend_build_cfg()
477 blocks[0].start = 0; in zend_build_cfg()
478 blocks[0].len = 0; in zend_build_cfg()
485 blocks[blocks_count].len = i - blocks[blocks_count].start; in zend_build_cfg()
488 initialize_block(&blocks[blocks_count]); in zend_build_cfg()
489 blocks[blocks_count].start = i; in zend_build_cfg()
494 blocks[blocks_count].len = i - blocks[blocks_count].start; in zend_build_cfg()
499 zend_basic_block *block = &blocks[j]; in zend_build_cfg()
606 zend_basic_block *blocks = cfg->blocks; in zend_cfg_build_predecessors() local
607 zend_basic_block *end = blocks + cfg->blocks_count; in zend_cfg_build_predecessors()
611 for (b = blocks; b < end; b++) { in zend_cfg_build_predecessors()
614 for (b = blocks; b < end; b++) { in zend_cfg_build_predecessors()
621 blocks[b->successors[s]].predecessors_count++; in zend_cfg_build_predecessors()
630 for (b = blocks; b < end; b++) { in zend_cfg_build_predecessors()
639 if (blocks[j].flags & ZEND_BB_REACHABLE) { in zend_cfg_build_predecessors()
641 for (s = 0; s < blocks[j].successors_count; s++) { in zend_cfg_build_predecessors()
646 if (blocks[j].successors[p] == blocks[j].successors[s]) { in zend_cfg_build_predecessors()
652 zend_basic_block *b = blocks + blocks[j].successors[s]; in zend_cfg_build_predecessors()
670 zend_basic_block *block = &cfg->blocks[block_num]; in compute_postnum_recursive()
687 zend_basic_block *blocks = cfg->blocks; in zend_cfg_compute_dominators_tree() local
698 blocks[0].idom = 0; in zend_cfg_compute_dominators_tree()
705 if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) { in zend_cfg_compute_dominators_tree()
708 for (k = 0; k < blocks[j].predecessors_count; k++) { in zend_cfg_compute_dominators_tree()
709 int pred = cfg->predecessors[blocks[j].predecessor_offset + k]; in zend_cfg_compute_dominators_tree()
712 if (blocks[pred].idom >= 0) in zend_cfg_compute_dominators_tree()
717 if (blocks[pred].idom >= 0) { in zend_cfg_compute_dominators_tree()
719 while (postnum[pred] < postnum[idom]) pred = blocks[pred].idom; in zend_cfg_compute_dominators_tree()
720 while (postnum[idom] < postnum[pred]) idom = blocks[idom].idom; in zend_cfg_compute_dominators_tree()
725 if (idom >= 0 && blocks[j].idom != idom) { in zend_cfg_compute_dominators_tree()
726 blocks[j].idom = idom; in zend_cfg_compute_dominators_tree()
731 blocks[0].idom = -1; in zend_cfg_compute_dominators_tree()
734 if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) { in zend_cfg_compute_dominators_tree()
737 if (blocks[j].idom >= 0) { in zend_cfg_compute_dominators_tree()
739 if (blocks[blocks[j].idom].children < 0 || in zend_cfg_compute_dominators_tree()
740 j < blocks[blocks[j].idom].children) { in zend_cfg_compute_dominators_tree()
741 blocks[j].next_child = blocks[blocks[j].idom].children; in zend_cfg_compute_dominators_tree()
742 blocks[blocks[j].idom].children = j; in zend_cfg_compute_dominators_tree()
744 int k = blocks[blocks[j].idom].children; in zend_cfg_compute_dominators_tree()
745 while (blocks[k].next_child >=0 && j > blocks[k].next_child) { in zend_cfg_compute_dominators_tree()
746 k = blocks[k].next_child; in zend_cfg_compute_dominators_tree()
748 blocks[j].next_child = blocks[k].next_child; in zend_cfg_compute_dominators_tree()
749 blocks[k].next_child = j; in zend_cfg_compute_dominators_tree()
755 int idom = blocks[j].idom, level = 0; in zend_cfg_compute_dominators_tree()
756 if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) { in zend_cfg_compute_dominators_tree()
761 if (blocks[idom].level >= 0) { in zend_cfg_compute_dominators_tree()
762 level += blocks[idom].level; in zend_cfg_compute_dominators_tree()
765 idom = blocks[idom].idom; in zend_cfg_compute_dominators_tree()
768 blocks[j].level = level; in zend_cfg_compute_dominators_tree()
776 static int dominates(zend_basic_block *blocks, int a, int b) /* {{{ */ in dominates() argument
778 while (blocks[b].level > blocks[a].level) { in dominates()
779 b = blocks[b].idom; in dominates()
802 zend_basic_block *blocks = cfg->blocks; in zend_cfg_identify_loops() local
828 for (j = blocks[i].children; j >= 0; j = blocks[j].next_child) { in zend_cfg_identify_loops()
834 for (j = 0; j < blocks[i].successors_count; j++) { in zend_cfg_identify_loops()
835 int succ = blocks[i].successors[j]; in zend_cfg_identify_loops()
836 if (blocks[succ].idom == i) { in zend_cfg_identify_loops()
850 sorted_blocks[i].level = blocks[i].level; in zend_cfg_identify_loops()
862 for (j = 0; j < blocks[i].predecessors_count; j++) { in zend_cfg_identify_loops()
863 int pred = cfg->predecessors[blocks[i].predecessor_offset + j]; in zend_cfg_identify_loops()
867 if (blocks[i].idom == pred) { in zend_cfg_identify_loops()
873 if (dominates(blocks, i, pred)) { in zend_cfg_identify_loops()
874 blocks[i].flags |= ZEND_BB_LOOP_HEADER; in zend_cfg_identify_loops()
881 blocks[i].flags |= ZEND_BB_IRREDUCIBLE_LOOP; in zend_cfg_identify_loops()
889 while (blocks[j].loop_header >= 0) { in zend_cfg_identify_loops()
890 j = blocks[j].loop_header; in zend_cfg_identify_loops()
893 if (blocks[j].idom < 0 && j != 0) { in zend_cfg_identify_loops()
897 blocks[j].loop_header = i; in zend_cfg_identify_loops()
898 for (k = 0; k < blocks[j].predecessors_count; k++) { in zend_cfg_identify_loops()
899 zend_worklist_push(&work, cfg->predecessors[blocks[j].predecessor_offset + k]); in zend_cfg_identify_loops()