ifcvt.c (cond_exec_process_if_block): Do nothing if the last insn in the block is...
authorJeffrey A Law <law@cygnus.com>
Wed, 31 May 2000 07:33:02 +0000 (07:33 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 31 May 2000 07:33:02 +0000 (01:33 -0600)
        * ifcvt.c (cond_exec_process_if_block): Do nothing if the last insn
        in the block is more than just a simple conditional branch.
        (noce_process_if_block): Similarly.

From-SVN: r34287

gcc/ChangeLog
gcc/ifcvt.c

index 1994c7f7669044ffd92301fb015680b588418387..35680e7ffa36e62a7b09a68edd830bea699dcbba 100644 (file)
@@ -1,3 +1,9 @@
+Wed May 31 01:31:42 2000  Jeffrey A Law  (law@cygnus.com)
+
+       * ifcvt.c (cond_exec_process_if_block): Do nothing if the last insn
+       in the block is more than just a simple conditional branch.
+       (noce_process_if_block): Similarly.
+
 Tue May 30 22:25:57 2000  Alexandre Oliva  <aoliva@cygnus.com>
 
        * optabs.c (prepare_float_lib_cmp): Protect *px and *py from
index 1bdfae3560492f504bb8879e38f100cb5bb81a34..ee2d143e24120cc167cc86a544d989f4bb12fef3 100644 (file)
@@ -313,6 +313,11 @@ cond_exec_process_if_block (test_bb, then_bb, else_bb, join_bb)
   if (! test_expr)
     return FALSE;
 
+  /* If the conditional jump is more than just a conditional jump,
+     then we can not do conditional execution conversion on this block.  */
+  if (!onlyjump_p (test_bb->end))
+    return FALSE;
+
   /* Collect the bounds of where we're to search.  */
 
   then_start = then_bb->head;
@@ -1106,6 +1111,11 @@ noce_process_if_block (test_bb, then_bb, else_bb, join_bb)
   if (! cond)
     return FALSE;
 
+  /* If the conditional jump is more than just a conditional jump,
+     then we can not do if-conversion on this block.  */
+  if (! onlyjump_p (jump))
+    return FALSE;
+
   /* We must be comparing objects whose modes imply the size.  */
   if (GET_MODE (XEXP (cond, 0)) == BLKmode)
     return FALSE;