aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-08-19 21:33:19 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-08-19 21:33:19 -0400
commit53e33d9533dd78d7be7366f39e29f860cc18675e (patch)
tree7db36a66325e664245bba90b76f6ea7c297c641d /gcc/combine.c
parent674ba2d6bfd0710a72b397571afab1378c8e347a (diff)
downloadgcc-53e33d9533dd78d7be7366f39e29f860cc18675e.zip
gcc-53e33d9533dd78d7be7366f39e29f860cc18675e.tar.gz
gcc-53e33d9533dd78d7be7366f39e29f860cc18675e.tar.bz2
(subst, case AND): Only make IF_THEN_ELSE if conditional moves exist.
From-SVN: r1903
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 7372e16..6729a3f 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -3638,6 +3638,8 @@ subst (x, from, to, in_dest, unique_copy)
goto restart;
}
+#ifdef HAVE_conditional_move
+
/* If we have (and A B) with A not an object but that is known to
be -1 or 0, this is equivalent to the expression
(if_then_else (ne A (const_int 0)) B (const_int 0))
@@ -3660,6 +3662,7 @@ subst (x, from, to, in_dest, unique_copy)
XEXP (x, 1), const0_rtx);
goto restart;
}
+#endif
/* In the following group of tests (and those in case IOR below),
we start with some combination of logical operations and apply
@@ -4799,6 +4802,8 @@ force_to_mode (x, mode, bits, reg)
&& sub_optab->handlers[(int) mode].insn_code == CODE_FOR_nothing)
|| (code == MULT && (smul_optab->handlers[(int) mode].insn_code
== CODE_FOR_nothing))
+ || (code == AND
+ && and_optab->handlers[(int) mode].insn_code == CODE_FOR_nothing)
|| (code == IOR
&& ior_optab->handlers[(int) mode].insn_code == CODE_FOR_nothing)
|| (code == XOR && (xor_optab->handlers[(int) mode].insn_code