summaryrefslogtreecommitdiff
path: root/gcc/ifcvt.c
diff options
context:
space:
mode:
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-29 22:10:44 +0000
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-29 22:10:44 +0000
commit367dc0cdc359d5c2ee19a4d2f983f092d185f00e (patch)
treea4ec15aceec0b091ed501e69eca717c1e7b43626 /gcc/ifcvt.c
parentbbb82bbf2e7663e15d60b83225ae3e363c55c11d (diff)
downloadgcc-367dc0cdc359d5c2ee19a4d2f983f092d185f00e.tar.gz
* flow.c (REVERSE_CONDEXEC_PREDICATES_P): Use the whole comparison, not
just the codes, call reversed_comparison_code (). (ior_reg_cond): Update arguments to REVERSE_CONDEXEC_PREDICATES_P. (not_reg_cond): Use reversed_comparison_code. (and_reg_cond): Likewise. * ifcvt.c (cond_exec_process_if_block): Likewise. * doc/tm.texi (REVERSE_CONDEXEC_PREDICATES_P): Update documentation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86737 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ifcvt.c')
-rw-r--r--gcc/ifcvt.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index 7473054757f..0767eb25008 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -491,6 +491,7 @@ cond_exec_process_if_block (ce_if_block_t * ce_info,
{
rtx start, end;
rtx t, f;
+ enum rtx_code f_code;
bb = block_fallthru (bb);
start = first_active_insn (bb);
@@ -510,11 +511,11 @@ cond_exec_process_if_block (ce_if_block_t * ce_info,
if (! t)
goto fail;
- f = gen_rtx_fmt_ee (reverse_condition (GET_CODE (t)),
- GET_MODE (t),
- XEXP (t, 0),
- XEXP (t, 1));
+ f_code = reversed_comparison_code (t, BB_END (bb));
+ if (f_code == UNKNOWN)
+ goto fail;
+ f = gen_rtx_fmt_ee (f_code, GET_MODE (t), XEXP (t, 0), XEXP (t, 1));
if (ce_info->and_and_p)
{
t = gen_rtx_AND (GET_MODE (t), true_expr, t);