Commit 5581fc91 by Richard Sandiford Committed by Richard Sandiford

expr.c (emit_move_insn_1): If there is no move pattern for the original mode...

	* expr.c (emit_move_insn_1): If there is no move pattern for the
	original mode, try using a pattern for the corresponding integer mode.

From-SVN: r71816
parent 9eb54558
2003-09-26 Richard Sandiford <rsandifo@redhat.com> 2003-09-26 Richard Sandiford <rsandifo@redhat.com>
* expr.c (emit_move_insn_1): If there is no move pattern for the
original mode, try using a pattern for the corresponding integer mode.
2003-09-26 Richard Sandiford <rsandifo@redhat.com>
* combine.c (if_then_else_cond): Tighten mode check. * combine.c (if_then_else_cond): Tighten mode check.
2003-09-25 Nathanael Nerode <neroden@gcc.gnu.org> 2003-09-25 Nathanael Nerode <neroden@gcc.gnu.org>
......
...@@ -3491,6 +3491,17 @@ emit_move_insn_1 (rtx x, rtx y) ...@@ -3491,6 +3491,17 @@ emit_move_insn_1 (rtx x, rtx y)
return emit_insn (GEN_FCN (insn_code) (x, y)); return emit_insn (GEN_FCN (insn_code) (x, y));
} }
/* Try using a move pattern for the corresponding integer mode. This is
only safe when simplify_subreg can convert MODE constants into integer
constants. At present, it can only do this reliably if the value
fits within a HOST_WIDE_INT. */
else if (GET_MODE_BITSIZE (mode) <= HOST_BITS_PER_WIDE_INT
&& (submode = int_mode_for_mode (mode)) != BLKmode
&& mov_optab->handlers[submode].insn_code != CODE_FOR_nothing)
return emit_insn (GEN_FCN (mov_optab->handlers[submode].insn_code)
(simplify_gen_subreg (submode, x, mode, 0),
simplify_gen_subreg (submode, y, mode, 0)));
/* This will handle any multi-word or full-word mode that lacks a move_insn /* This will handle any multi-word or full-word mode that lacks a move_insn
pattern. However, you will get better code if you define such patterns, pattern. However, you will get better code if you define such patterns,
even if they must turn into multiple assembler instructions. */ even if they must turn into multiple assembler instructions. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment