Thu Sep 30 18:04:13 1999 Richard Henderson <rth@cygnus.com>
+ * jump.c (jump_optimize_1): Amend last change to test only the
+ form of the operand, not the insn.
+
* jump.c (jump_optimize_1) [conditional_move]: Use general_operand
not register_operand to determine when B may need preloading.
start_sequence ();
- /* If we're not dealing with a simple operand or the insn is
- more complex than a simple SET, duplicate the computation
- and replace the destination with a new temporary. */
- if (general_operand (temp2, GET_MODE (var))
- && GET_CODE (PATTERN (temp)) == SET)
+ /* We're dealing with a single_set insn with no side effects
+ on SET_SRC. We do need to be reasonably certain that if
+ we need to force BVAL into a register that we won't
+ clobber the flags -- general_operand should suffice. */
+ if (general_operand (temp2, GET_MODE (var)))
bval = temp2;
else
{
SET_DEST (temp6) = bval;
emit_insn (PATTERN (new_insn));
}
-
+
target = emit_conditional_move (var, code,
cond0, cond1, VOIDmode,
aval, bval, GET_MODE (var),