diff options
author | Richard Henderson <rth@cygnus.com> | 1999-09-30 18:13:51 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1999-09-30 18:13:51 -0700 |
commit | 39cc9917e21cb9f2145881c321a25ab8ed2bb54a (patch) | |
tree | 76f8bfd2ba50763adcf42702ea6522d0bc52c905 /gcc | |
parent | 6d97e0b42ed9661ed26c122062b724ce64f84f36 (diff) | |
download | gcc-39cc9917e21cb9f2145881c321a25ab8ed2bb54a.zip gcc-39cc9917e21cb9f2145881c321a25ab8ed2bb54a.tar.gz gcc-39cc9917e21cb9f2145881c321a25ab8ed2bb54a.tar.bz2 |
jump.c (jump_optimize_1): Amend last change to test only the form of the operand, not the insn.
* jump.c (jump_optimize_1): Amend last change to test only the
form of the operand, not the insn.
From-SVN: r29741
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/jump.c | 12 |
2 files changed, 9 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 605e26c..34656de 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 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. @@ -1169,11 +1169,11 @@ jump_optimize_1 (f, cross_jump, noop_moves, after_regscan, mark_labels_only) 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 { @@ -1183,7 +1183,7 @@ jump_optimize_1 (f, cross_jump, noop_moves, after_regscan, mark_labels_only) SET_DEST (temp6) = bval; emit_insn (PATTERN (new_insn)); } - + target = emit_conditional_move (var, code, cond0, cond1, VOIDmode, aval, bval, GET_MODE (var), |