From: Richard Kenner Date: Thu, 20 Aug 1992 01:33:19 +0000 (-0400) Subject: (subst, case AND): Only make IF_THEN_ELSE if conditional moves exist. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=53e33d9533dd78d7be7366f39e29f860cc18675e;p=gcc.git (subst, case AND): Only make IF_THEN_ELSE if conditional moves exist. From-SVN: r1903 --- diff --git a/gcc/combine.c b/gcc/combine.c index 7372e166392..6729a3f2f69 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