From 31a782981f03d3a5184e12920c1cd3176d904ab4 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Fri, 21 Jun 2002 12:05:00 -0700 Subject: bb-reorder.c (make_reorder_chain_1): Search harder for the vax casesi fallthru edge. 2002-06-21 Richard Henderson * bb-reorder.c (make_reorder_chain_1): Search harder for the vax casesi fallthru edge. * cfglayout.c (cleanup_unconditional_jumps): Use redirect_edge_succ_nodup. Do not delete ADDR_VEC insns as dead. * cfgrtl.c (force_nonfallthru_and_redirect): Place redirection block after ADDR_VEC. From-SVN: r54885 --- gcc/bb-reorder.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'gcc/bb-reorder.c') diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index 6ae4c76d382..24c41e51ced 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -209,17 +209,21 @@ make_reorder_chain_1 (bb, prev) /* In the absence of a prediction, disturb things as little as possible by selecting the old "next" block from the list of successors. If there had been a fallthru edge, that will be the one. */ + /* Note that the fallthru block may not be next any time we eliminate + forwarder blocks. */ if (! next) { for (e = bb->succ; e ; e = e->succ_next) - if (e->dest == bb->next_bb) + if (e->flags & EDGE_FALLTHRU) { - if ((e->flags & EDGE_FALLTHRU) - || (e->dest->succ - && ! (e->flags & (EDGE_ABNORMAL_CALL | EDGE_EH)))) - next = e->dest; + next = e->dest; break; } + else if (e->dest == bb->next_bb) + { + if (! (e->flags & (EDGE_ABNORMAL_CALL | EDGE_EH))) + next = e->dest; + } } /* Make sure we didn't select a silly next block. */ -- cgit v1.2.1