summaryrefslogtreecommitdiff
path: root/gcc/ifcvt.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-31 07:33:02 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-31 07:33:02 +0000
commit2580b9b65f2771e0353dedf49cd263af33cec6e0 (patch)
tree3c396a1a4ed7f6888d20c5eba0ac9b9cea7cfd36 /gcc/ifcvt.c
parent009e05229d7389d5c34c4e79b9fad72351572abd (diff)
downloadgcc-2580b9b65f2771e0353dedf49cd263af33cec6e0.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34287 138bc75d-0d04-0410-961f-82ee72b054a4
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 1bdfae35604..ee2d143e241 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;