From: Richard Henderson Date: Mon, 17 Dec 2001 18:21:36 +0000 (-0800) Subject: cfgcleanup.c (outgoing_edges_match): Check for insn match with a single outgoing... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c04cf67b3ffc8b8e6e6833b8e383299e74211abb;p=gcc.git cfgcleanup.c (outgoing_edges_match): Check for insn match with a single outgoing edge too. * cfgcleanup.c (outgoing_edges_match): Check for insn match with a single outgoing edge too. From-SVN: r48114 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 289bec38eaa..e508636e3b2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-12-17 Richard Henderson + + * cfgcleanup.c (outgoing_edges_match): Check for insn match with + a single outgoing edge too. + Mon Dec 17 18:27:52 CET 2001 Jan Hubicka * cfgrtl.c (redirect_edge_and_branch): Do simplify abnormal diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index d13e3a05349..b23def8b3bc 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -956,11 +956,14 @@ outgoing_edges_match (mode, bb1, bb2) edge fallthru1 = 0, fallthru2 = 0; edge e1, e2; - /* If BB1 has only one successor, we must be looking at an unconditional - jump. Which, by the assumption above, means that we only need to check - that BB2 has one successor. */ + /* If BB1 has only one successor, we may be looking at either an + unconditional jump, or a fake edge to exit. */ if (bb1->succ && !bb1->succ->succ_next) - return (bb2->succ && !bb2->succ->succ_next); + { + if (! bb2->succ || bb2->succ->succ_next) + return false; + return insns_match_p (mode, bb1->end, bb2->end); + } /* Match conditional jumps - this may get tricky when fallthru and branch edges are crossed. */