aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgcleanup.c
diff options
context:
space:
mode:
authorJosef Zlomek <zlomekj@suse.cz>2003-02-13 19:31:40 +0100
committerJosef Zlomek <zlomek@gcc.gnu.org>2003-02-13 18:31:40 +0000
commitffc8f11e8c85e4195a83300ef09ab497929cef69 (patch)
treea2166a02df3f0b925223f19613efbad88aab0761 /gcc/cfgcleanup.c
parentb7bb6d4a6a9cb69ec0abc09a4aab35c92af6bb86 (diff)
downloadgcc-ffc8f11e8c85e4195a83300ef09ab497929cef69.zip
gcc-ffc8f11e8c85e4195a83300ef09ab497929cef69.tar.gz
gcc-ffc8f11e8c85e4195a83300ef09ab497929cef69.tar.bz2
cfgcleanup.c (outgoing_edges_match): When there is single outgoing edge and block ends with a jump insn it must be...
* cfgcleanup.c (outgoing_edges_match): When there is single outgoing edge and block ends with a jump insn it must be simple jump. From-SVN: r62858
Diffstat (limited to 'gcc/cfgcleanup.c')
-rw-r--r--gcc/cfgcleanup.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c
index 2a23cc0..338281a 100644
--- a/gcc/cfgcleanup.c
+++ b/gcc/cfgcleanup.c
@@ -1119,9 +1119,11 @@ outgoing_edges_match (mode, bb1, bb2)
/* If BB1 has only one successor, we may be looking at either an
unconditional jump, or a fake edge to exit. */
if (bb1->succ && !bb1->succ->succ_next
- && !(bb1->succ->flags & (EDGE_COMPLEX | EDGE_FAKE)))
+ && (bb1->succ->flags & (EDGE_COMPLEX | EDGE_FAKE)) == 0
+ && (GET_CODE (bb1->end) != JUMP_INSN || simplejump_p (bb1->end)))
return (bb2->succ && !bb2->succ->succ_next
- && (bb2->succ->flags & (EDGE_COMPLEX | EDGE_FAKE)) == 0);
+ && (bb2->succ->flags & (EDGE_COMPLEX | EDGE_FAKE)) == 0
+ && (GET_CODE (bb2->end) != JUMP_INSN || simplejump_p (bb2->end)));
/* Match conditional jumps - this may get tricky when fallthru and branch
edges are crossed. */