From 7fca6166e8fdb879e1d6c655d854752373ab5cd7 Mon Sep 17 00:00:00 2001 From: kazu Date: Tue, 23 Nov 2004 19:34:35 +0000 Subject: * tree-cfg.c (tree_try_redirect_by_replacing_jump): Speed up by restricting to the case with two outgoing edges. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91098 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/tree-cfg.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'gcc/tree-cfg.c') diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 1f934cb7ec5..b59c8f7ccbb 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -4247,17 +4247,15 @@ static edge tree_try_redirect_by_replacing_jump (edge e, basic_block target) { basic_block src = e->src; - edge tmp; block_stmt_iterator b; tree stmt; - edge_iterator ei; - - /* Verify that all targets will be TARGET. */ - FOR_EACH_EDGE (tmp, ei, src->succs) - if (tmp->dest != target && tmp != e) - break; - if (tmp) + /* We can replace or remove a complex jump only when we have exactly + two edges. */ + if (EDGE_COUNT (src->succs) != 2 + /* Verify that all targets will be TARGET. Specifically, the + edge that is not E must also go to TARGET. */ + || EDGE_SUCC (src, EDGE_SUCC (src, 0) == e)->dest != target) return NULL; b = bsi_last (src); -- cgit v1.2.1