From: Kazu Hirata Date: Mon, 29 Nov 2004 17:56:19 +0000 (+0000) Subject: cfgrtl.c (cfg_layout_redirect_edge_and_branch): Speed up by simplifying edge manipula... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=03101c6f2b4ce8f254b707b709183a08ef41de1f;p=gcc.git cfgrtl.c (cfg_layout_redirect_edge_and_branch): Speed up by simplifying edge manipulation. * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Speed up by simplifying edge manipulation. From-SVN: r91474 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5b5606469a9..4f6a58d0f04 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -6,6 +6,9 @@ * tree-ssa-loop-manip.c: Likewise. * tree-ssa.c: Likewise. + * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Speed up by + simplifying edge manipulation. + 2004-11-29 Alan Modra * varasm.c (default_elf_select_section_1): Only pass DECL_P decl diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 3ba3265e683..818c5b826e8 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -2587,25 +2587,8 @@ cfg_layout_redirect_edge_and_branch (edge e, basic_block dest) of conditional jump, remove it. */ if (EDGE_COUNT (src->succs) == 2) { - bool found = false; - unsigned ix = 0; - edge tmp, s; - edge_iterator ei; - - FOR_EACH_EDGE (tmp, ei, src->succs) - if (e == tmp) - { - found = true; - ix = ei.index; - break; - } - - gcc_assert (found); - - if (EDGE_COUNT (src->succs) > (ix + 1)) - s = EDGE_SUCC (src, ix + 1); - else - s = EDGE_SUCC (src, 0); + /* Find the edge that is different from E. */ + edge s = EDGE_SUCC (src, EDGE_SUCC (src, 0) == e); if (s->dest == dest && any_condjump_p (BB_END (src))