aboutsummaryrefslogtreecommitdiff
path: root/gcc/ifcvt.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>2000-05-31 07:33:02 +0000
committerJeff Law <law@gcc.gnu.org>2000-05-31 01:33:02 -0600
commit2bc631143e367f48a6d92e396dd45858080367dc (patch)
tree3c396a1a4ed7f6888d20c5eba0ac9b9cea7cfd36 /gcc/ifcvt.c
parent71a19881247be278a9fb072347c07a9411372e10 (diff)
downloadgcc-2bc631143e367f48a6d92e396dd45858080367dc.zip
gcc-2bc631143e367f48a6d92e396dd45858080367dc.tar.gz
gcc-2bc631143e367f48a6d92e396dd45858080367dc.tar.bz2
ifcvt.c (cond_exec_process_if_block): Do nothing if the last insn in the block is more than just a simple conditional...
* 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
Diffstat (limited to 'gcc/ifcvt.c')
-rw-r--r--gcc/ifcvt.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index 1bdfae3..ee2d143 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -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;