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
This commit is contained in:
Kazu Hirata 2004-11-29 17:56:19 +00:00 committed by Kazu Hirata
parent 62112e35c6
commit 03101c6f2b
2 changed files with 5 additions and 19 deletions

View File

@ -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 <amodra@bigpond.net.au>
* varasm.c (default_elf_select_section_1): Only pass DECL_P decl

View File

@ -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))