diff options
Diffstat (limited to 'gcc/sched-rgn.c')
-rw-r--r-- | gcc/sched-rgn.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c index 4da38c5..7fe0197 100644 --- a/gcc/sched-rgn.c +++ b/gcc/sched-rgn.c @@ -390,9 +390,9 @@ build_control_flow (struct edge_list *edge_list) unreachable = 0; FOR_EACH_BB (b) { - if (b->pred == NULL - || (b->pred->src == b - && b->pred->pred_next == NULL)) + if (EDGE_COUNT (b->preds) == 0 + || (EDGE_PRED (b, 0)->src == b + && EDGE_COUNT (b->preds) == 1)) unreachable = 1; } @@ -615,7 +615,7 @@ find_rgns (struct edge_list *edge_list) char no_loops = 1; int node, child, loop_head, i, head, tail; int count = 0, sp, idx = 0; - int current_edge = out_edges[ENTRY_BLOCK_PTR->succ->dest->index]; + int current_edge = out_edges[EDGE_SUCC (ENTRY_BLOCK_PTR, 0)->dest->index]; int num_bbs, num_insns, unreachable; int too_large_failure; basic_block bb; @@ -802,6 +802,7 @@ find_rgns (struct edge_list *edge_list) if (TEST_BIT (header, bb->index) && TEST_BIT (inner, bb->index)) { edge e; + edge_iterator ei; basic_block jbb; /* Now check that the loop is reducible. We do this separate @@ -842,7 +843,7 @@ find_rgns (struct edge_list *edge_list) /* Decrease degree of all I's successors for topological ordering. */ - for (e = bb->succ; e; e = e->succ_next) + FOR_EACH_EDGE (e, ei, bb->succs) if (e->dest != EXIT_BLOCK_PTR) --degree[e->dest->index]; @@ -860,9 +861,8 @@ find_rgns (struct edge_list *edge_list) FOR_EACH_BB (jbb) /* Leaf nodes have only a single successor which must be EXIT_BLOCK. */ - if (jbb->succ - && jbb->succ->dest == EXIT_BLOCK_PTR - && jbb->succ->succ_next == NULL) + if (EDGE_COUNT (jbb->succs) == 1 + && EDGE_SUCC (jbb, 0)->dest == EXIT_BLOCK_PTR) { queue[++tail] = jbb->index; SET_BIT (in_queue, jbb->index); @@ -878,7 +878,7 @@ find_rgns (struct edge_list *edge_list) { edge e; - for (e = bb->pred; e; e = e->pred_next) + FOR_EACH_EDGE (e, ei, bb->preds) { if (e->src == ENTRY_BLOCK_PTR) continue; @@ -935,7 +935,7 @@ find_rgns (struct edge_list *edge_list) edge e; child = queue[++head]; - for (e = BASIC_BLOCK (child)->pred; e; e = e->pred_next) + FOR_EACH_EDGE (e, ei, BASIC_BLOCK (child)->preds) { node = e->src->index; @@ -990,9 +990,7 @@ find_rgns (struct edge_list *edge_list) CONTAINING_RGN (child) = nr_regions; queue[head] = queue[tail--]; - for (e = BASIC_BLOCK (child)->succ; - e; - e = e->succ_next) + FOR_EACH_EDGE (e, ei, BASIC_BLOCK (child)->succs) if (e->dest != EXIT_BLOCK_PTR) --degree[e->dest->index]; } |