Home | History | Annotate | Download | only in i965

Lines Matching refs:block

40    bblock_t *block = link->block;
43 return block;
47 link(void *mem_ctx, bblock_t *block)
49 bblock_link *l = new(mem_ctx) bblock_link(block);
69 bblock_t::is_predecessor_of(const bblock_t *block) const
71 foreach_list_typed_safe (bblock_link, parent, link, &block->parents) {
72 if (parent->block == this) {
81 bblock_t::is_successor_of(const bblock_t *block) const
83 foreach_list_typed_safe (bblock_link, child, link, &block->children) {
84 if (child->block == this) {
131 assert(link->block == that);
134 assert(link->block == this);
197 /* Set up our immediately following block, full of "then"
220 /* New block was just created; use it. */
254 /* Set up the block just after the while. Don't know when exactly
260 /* New block was just created; use it. */
332 cfg_t::remove_block(bblock_t *block)
334 foreach_list_typed_safe (bblock_link, predecessor, link, &block->parents) {
335 /* Remove block from all of its predecessors' successor lists. */
337 &predecessor->block->children) {
338 if (block == successor->block) {
344 /* Add removed-block's successors to its predecessors' successor lists. */
345 foreach_list_typed (bblock_link, successor, link, &block->children) {
346 if (!successor->block->is_successor_of(predecessor->block)) {
347 predecessor->block->children.push_tail(link(mem_ctx,
348 successor->block));
353 foreach_list_typed_safe (bblock_link, successor, link, &block->children) {
354 /* Remove block from all of its childrens' parents lists. */
356 &successor->block->parents) {
357 if (block == predecessor->block) {
363 /* Add removed-block's predecessors to its successors' predecessor lists. */
364 foreach_list_typed (bblock_link, predecessor, link, &block->parents) {
365 if (!predecessor->block->is_predecessor_of(successor->block)) {
366 successor->block->parents.push_tail(link(mem_ctx,
367 predecessor->block));
372 block->link.remove();
374 for (int b = block->num; b < this->num_blocks - 1; b++) {
387 bblock_t *block = new(mem_ctx) bblock_t(this);
389 return block;
393 cfg_t::set_next_block(bblock_t **cur, bblock_t *block, int ip)
399 block->start_ip = ip;
400 block->num = num_blocks++;
401 block_list.push_tail(&block->link);
402 *cur = block;
411 foreach_block (block, this) {
412 blocks[i++] = block;
423 foreach_block (block, this) {
424 if (block->idom)
425 fprintf(stderr, "START B%d IDOM(B%d)", block->num, block->idom->num);
427 fprintf(stderr, "START B%d IDOM(none)", block->num);
429 foreach_list_typed(bblock_link, link, link, &block->parents) {
431 link->block->num);
435 block->dump(s);
436 fprintf(stderr, "END B%d", block->num);
437 foreach_list_typed(bblock_link, link, link, &block->children) {
439 link->block->num);
445 /* Calculates the immediate dominator of each block, according to "A Simple,
456 foreach_block(block, this) {
457 block->idom = NULL;
465 foreach_block(block, this) {
466 if (block->num == 0)
470 foreach_list_typed(bblock_link, parent, link, &block->parents) {
471 if (parent->block->idom) {
473 new_idom = parent->block;
474 } else if (parent->block->idom != NULL) {
475 new_idom = intersect(parent->block, new_idom);
480 if (block->idom != new_idom) {
481 block->idom = new_idom;
512 bblock_t *block = this->blocks[b];
514 foreach_list_typed_safe (bblock_link, child, link, &block->children) {
515 printf("\t%d -> %d\n", b, child->block->num);
525 foreach_block(block, this) {
526 if (block->idom) {
527 printf("\t%d -> %d\n", block->idom->num, block->num);