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
467 cfg->blocks = blocks = zend_arena_calloc(arena, sizeof(zend_basic_block), blocks_count); in zend_build_cfg()
472 initialize_block(&blocks[0]); in zend_build_cfg()
473 blocks[0].start = 0; in zend_build_cfg()
474 blocks[0].len = 0; in zend_build_cfg()
481 blocks[blocks_count].len = i - blocks[blocks_count].start; in zend_build_cfg()
484 initialize_block(&blocks[blocks_count]); in zend_build_cfg()
485 blocks[blocks_count].start = i; in zend_build_cfg()
490 blocks[blocks_count].len = i - blocks[blocks_count].start; in zend_build_cfg()
495 zend_basic_block *block = &blocks[j]; in zend_build_cfg()
596 zend_basic_block *blocks = cfg->blocks; in zend_cfg_build_predecessors() local
597 zend_basic_block *end = blocks + cfg->blocks_count; in zend_cfg_build_predecessors()
601 for (b = blocks; b < end; b++) { in zend_cfg_build_predecessors()
604 for (b = blocks; b < end; b++) { in zend_cfg_build_predecessors()
611 blocks[b->successors[s]].predecessors_count++; in zend_cfg_build_predecessors()
620 for (b = blocks; b < end; b++) { in zend_cfg_build_predecessors()
629 if (blocks[j].flags & ZEND_BB_REACHABLE) { in zend_cfg_build_predecessors()
631 for (s = 0; s < blocks[j].successors_count; s++) { in zend_cfg_build_predecessors()
636 if (blocks[j].successors[p] == blocks[j].successors[s]) { in zend_cfg_build_predecessors()
642 zend_basic_block *b = blocks + blocks[j].successors[s]; in zend_cfg_build_predecessors()
658 zend_basic_block *block = &cfg->blocks[block_num]; in compute_postnum_recursive()
675 zend_basic_block *blocks = cfg->blocks; in zend_cfg_compute_dominators_tree() local
680 blocks[0].level = 0; in zend_cfg_compute_dominators_tree()
691 blocks[0].idom = 0; in zend_cfg_compute_dominators_tree()
698 if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) { in zend_cfg_compute_dominators_tree()
701 for (k = 0; k < blocks[j].predecessors_count; k++) { in zend_cfg_compute_dominators_tree()
702 int pred = cfg->predecessors[blocks[j].predecessor_offset + k]; in zend_cfg_compute_dominators_tree()
704 if (blocks[pred].idom >= 0) { in zend_cfg_compute_dominators_tree()
709 while (postnum[pred] < postnum[idom]) pred = blocks[pred].idom; in zend_cfg_compute_dominators_tree()
710 while (postnum[idom] < postnum[pred]) idom = blocks[idom].idom; in zend_cfg_compute_dominators_tree()
716 if (idom >= 0 && blocks[j].idom != idom) { in zend_cfg_compute_dominators_tree()
717 blocks[j].idom = idom; in zend_cfg_compute_dominators_tree()
722 blocks[0].idom = -1; in zend_cfg_compute_dominators_tree()
725 if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) { in zend_cfg_compute_dominators_tree()
728 if (blocks[j].idom >= 0) { in zend_cfg_compute_dominators_tree()
730 if (blocks[blocks[j].idom].children < 0 || in zend_cfg_compute_dominators_tree()
731 j < blocks[blocks[j].idom].children) { in zend_cfg_compute_dominators_tree()
732 blocks[j].next_child = blocks[blocks[j].idom].children; in zend_cfg_compute_dominators_tree()
733 blocks[blocks[j].idom].children = j; in zend_cfg_compute_dominators_tree()
735 int k = blocks[blocks[j].idom].children; in zend_cfg_compute_dominators_tree()
736 while (blocks[k].next_child >=0 && j > blocks[k].next_child) { in zend_cfg_compute_dominators_tree()
737 k = blocks[k].next_child; in zend_cfg_compute_dominators_tree()
739 blocks[j].next_child = blocks[k].next_child; in zend_cfg_compute_dominators_tree()
740 blocks[k].next_child = j; in zend_cfg_compute_dominators_tree()
746 int idom = blocks[j].idom, level = 0; in zend_cfg_compute_dominators_tree()
747 if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) { in zend_cfg_compute_dominators_tree()
752 if (blocks[idom].level >= 0) { in zend_cfg_compute_dominators_tree()
753 level += blocks[idom].level; in zend_cfg_compute_dominators_tree()
756 idom = blocks[idom].idom; in zend_cfg_compute_dominators_tree()
759 blocks[j].level = level; in zend_cfg_compute_dominators_tree()
766 static bool dominates(zend_basic_block *blocks, int a, int b) /* {{{ */ in dominates() argument
768 while (blocks[b].level > blocks[a].level) { in dominates()
769 b = blocks[b].idom; in dominates()
779 zend_basic_block *blocks = cfg->blocks; in zend_cfg_identify_loops() local
810 for (j = blocks[i].children; j >= 0; j = blocks[j].next_child) { in zend_cfg_identify_loops()
816 for (j = 0; j < blocks[i].successors_count; j++) { in zend_cfg_identify_loops()
817 int succ = blocks[i].successors[j]; in zend_cfg_identify_loops()
818 if (blocks[succ].idom == i) { in zend_cfg_identify_loops()
837 for (child = blocks[sorted_blocks[i]].children; child >= 0; child = blocks[child].next_child) { in zend_cfg_identify_loops()
847 if (blocks[i].predecessors_count < 2) { in zend_cfg_identify_loops()
852 for (j = 0; j < blocks[i].predecessors_count; j++) { in zend_cfg_identify_loops()
853 int pred = cfg->predecessors[blocks[i].predecessor_offset + j]; in zend_cfg_identify_loops()
857 if (blocks[i].idom == pred) { in zend_cfg_identify_loops()
863 if (dominates(blocks, i, pred)) { in zend_cfg_identify_loops()
864 blocks[i].flags |= ZEND_BB_LOOP_HEADER; in zend_cfg_identify_loops()
874 blocks[i].flags |= ZEND_BB_IRREDUCIBLE_LOOP; in zend_cfg_identify_loops()
882 while (blocks[j].loop_header >= 0) { in zend_cfg_identify_loops()
883 j = blocks[j].loop_header; in zend_cfg_identify_loops()
886 if (blocks[j].idom < 0 && j != 0) { in zend_cfg_identify_loops()
890 blocks[j].loop_header = i; in zend_cfg_identify_loops()
891 for (k = 0; k < blocks[j].predecessors_count; k++) { in zend_cfg_identify_loops()
892 zend_worklist_push(&work, cfg->predecessors[blocks[j].predecessor_offset + k]); in zend_cfg_identify_loops()