* cfg.c (redirect_edge_succ_nodup): Use find_edge rather than
implementing it inline.
* cfganal.c (find_edge): Search pred->succs or succ->preds,
whichever is shorter.
From-SVN: r90333
+2004-11-08 Jeff Law <law@redhat.com>
+
+ * cfg.c (redirect_edge_succ_nodup): Use find_edge rather than
+ implementing it inline.
+
+ * cfganal.c (find_edge): Search pred->succs or succ->preds,
+ whichever is shorter.
+
2004-11-08 Kazu Hirata <kazu@cs.umass.edu>
* passes.c (rest_of_handle_jump): Remove dead code.
redirect_edge_succ_nodup (edge e, basic_block new_succ)
{
edge s;
- edge_iterator ei;
-
- /* Check whether the edge is already present. */
- FOR_EACH_EDGE (s, ei, e->src->succs)
- if (s->dest == new_succ && s != e)
- break;
- if (s)
+ s = find_edge (e->src, new_succ);
+ if (s && s != e)
{
s->flags |= e->flags;
s->probability += e->probability;
edge e;
edge_iterator ei;
- FOR_EACH_EDGE (e, ei, pred->succs)
- if (e->dest == succ)
- return e;
+ if (EDGE_COUNT (pred->succs) <= EDGE_COUNT (succ->preds))
+ {
+ FOR_EACH_EDGE (e, ei, pred->succs)
+ if (e->dest == succ)
+ return e;
+ }
+ else
+ {
+ FOR_EACH_EDGE (e, ei, succ->preds)
+ if (e->src == pred)
+ return e;
+ }
return NULL;
}