]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
cfgcleanup.c (outgoing_edges_match): When there is single outgoing edge and block...
authorJosef Zlomek <zlomekj@suse.cz>
Thu, 13 Feb 2003 18:32:17 +0000 (19:32 +0100)
committerJosef Zlomek <zlomek@gcc.gnu.org>
Thu, 13 Feb 2003 18:32:17 +0000 (18:32 +0000)
* 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: r62860

gcc/ChangeLog
gcc/cfgcleanup.c

index 321867c047ddd2678bc6e6e7dcf93d6550752a9d..0ad26a0c287b8e7066056779cd8167b6504dc659 100644 (file)
@@ -1,3 +1,8 @@
+2003-02-13  Josef Zlomek  <zlomekj@suse.cz>
+
+       * cfgcleanup.c (outgoing_edges_match): When there is single outgoing
+       edge and block ends with a jump insn it must be simple jump.
+
 2003-02-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        PR9275 and PR8694
index 9589d1f6a43ffce32499b9e13f9ffb4f9503fac5..4cadfe81cdc28be79a8658500ee0a6e735e2ad24 100644 (file)
@@ -1078,9 +1078,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.  */