diff options
author | Jeff Law <law@redhat.com> | 2004-11-08 21:21:49 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2004-11-08 21:21:49 -0700 |
commit | df95526be1b070f6dab3167f362056f4c2c43cfd (patch) | |
tree | 06652f7acaf9367a0888955e343219ae2cf9e5d9 /gcc/cfganal.c | |
parent | 68e4debe62c4404b0b5fdebf592c2b36bf52949d (diff) | |
download | gcc-df95526be1b070f6dab3167f362056f4c2c43cfd.zip gcc-df95526be1b070f6dab3167f362056f4c2c43cfd.tar.gz gcc-df95526be1b070f6dab3167f362056f4c2c43cfd.tar.bz2 |
cfg.c (redirect_edge_succ_nodup): Use find_edge rather than implementing it inline.
* 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
Diffstat (limited to 'gcc/cfganal.c')
-rw-r--r-- | gcc/cfganal.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/cfganal.c b/gcc/cfganal.c index 651f153..06c71f6 100644 --- a/gcc/cfganal.c +++ b/gcc/cfganal.c @@ -478,9 +478,18 @@ find_edge (basic_block pred, basic_block succ) 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; } |