(move_by_pieces_1): If would call it, abort if no PUSH_ROUNDING.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44740
138bc75d-0d04-0410-961f-
82ee72b054a4
+Thu Aug 9 11:30:20 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * expr.c (emit_single_push_insn): Only exists ifdef PUSH_ROUNDING.
+ (move_by_pieces_1): If would call it, abort if no PUSH_ROUNDING.
+
2001-08-09 Graham Stott <grahams@redhat.com>
* sched-vis.c (MAX_VISUAL_NO_UNIT): Define.
2001-08-09 Graham Stott <grahams@redhat.com>
* sched-vis.c (MAX_VISUAL_NO_UNIT): Define.
static void do_compare_and_jump PARAMS ((tree, enum rtx_code, enum rtx_code,
rtx, rtx));
static rtx do_store_flag PARAMS ((tree, rtx, enum machine_mode, int));
static void do_compare_and_jump PARAMS ((tree, enum rtx_code, enum rtx_code,
rtx, rtx));
static rtx do_store_flag PARAMS ((tree, rtx, enum machine_mode, int));
static void emit_single_push_insn PARAMS ((enum machine_mode, rtx, tree));
static void emit_single_push_insn PARAMS ((enum machine_mode, rtx, tree));
/* Record for each mode whether we can move a register directly to or
from an object of that mode in memory. If we can't, we won't try
/* Record for each mode whether we can move a register directly to or
from an object of that mode in memory. If we can't, we won't try
#define MOVE_MAX_PIECES MOVE_MAX
#endif
#define MOVE_MAX_PIECES MOVE_MAX
#endif
-/* Generate several move instructions to copy LEN bytes
- from block FROM to block TO. (These are MEM rtx's with BLKmode).
- The caller must pass FROM and TO
- through protect_from_queue before calling.
+/* Generate several move instructions to copy LEN bytes from block FROM to
+ block TO. (These are MEM rtx's with BLKmode). The caller must pass FROM
+ and TO through protect_from_queue before calling.
- When TO is NULL, the emit_single_push_insn is used to push the
- FROM to stack.
+ If PUSH_ROUNDING is defined and TO is NULL, emit_single_push_insn is
+ used to push FROM to the stack.
ALIGN is maximum alignment we can assume. */
ALIGN is maximum alignment we can assume. */
if (data->to)
emit_insn ((*genfun) (to1, from1));
else
if (data->to)
emit_insn ((*genfun) (to1, from1));
else
- emit_single_push_insn (mode, from1, NULL);
+ {
+#ifdef PUSH_ROUNDING
+ emit_single_push_insn (mode, from1, NULL);
+#else
+ abort ();
+#endif
+ }
if (HAVE_POST_INCREMENT && data->explicit_inc_to > 0)
emit_insn (gen_add2_insn (data->to_addr, GEN_INT (size)));
if (HAVE_POST_INCREMENT && data->explicit_inc_to > 0)
emit_insn (gen_add2_insn (data->to_addr, GEN_INT (size)));
return copy_to_reg (temp);
}
return copy_to_reg (temp);
}
/* Emit single push insn. */
/* Emit single push insn. */
static void
emit_single_push_insn (mode, x, type)
rtx x;
enum machine_mode mode;
tree type;
{
static void
emit_single_push_insn (mode, x, type)
rtx x;
enum machine_mode mode;
tree type;
{
rtx dest_addr;
unsigned rounded_size = PUSH_ROUNDING (GET_MODE_SIZE (mode));
rtx dest;
rtx dest_addr;
unsigned rounded_size = PUSH_ROUNDING (GET_MODE_SIZE (mode));
rtx dest;
set_mem_alias_set (dest, 0);
}
emit_move_insn (dest, x);
set_mem_alias_set (dest, 0);
}
emit_move_insn (dest, x);
-#else
- abort();
-#endif
/* Generate code to push X onto the stack, assuming it has mode MODE and
type TYPE.
/* Generate code to push X onto the stack, assuming it has mode MODE and
type TYPE.