diff options
author | Richard Henderson <rth@redhat.com> | 2002-06-21 12:05:00 -0700 |
---|---|---|
committer | Jason Thorpe <thorpej@gcc.gnu.org> | 2002-06-21 19:05:00 +0000 |
commit | 31a782981f03d3a5184e12920c1cd3176d904ab4 (patch) | |
tree | 98be2ed2c2355e3096a24b83a1f3587c21e93b38 /gcc/bb-reorder.c | |
parent | b62cc13a208075e7853d29438eb68cd1456c017d (diff) | |
download | gcc-31a782981f03d3a5184e12920c1cd3176d904ab4.tar.gz |
bb-reorder.c (make_reorder_chain_1): Search harder for the vax casesi fallthru edge.
2002-06-21 Richard Henderson <rth@redhat.com>
* 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
Diffstat (limited to 'gcc/bb-reorder.c')
-rw-r--r-- | gcc/bb-reorder.c | 14 |
1 files changed, 9 insertions, 5 deletions
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. */ |