* expr.c (move_by_pieces): No longer static. Remove prototype.
* rtl.h (move_by_pieces): Add extern prototype.
* mips.c (expand_block_move): Handle aligned straight line copy by
calling move_by_pieces.
From-SVN: r21794
Mon Aug 17 11:46:19 1998 Jeffrey A Law (law@cygnus.com)
+ * expr.c (move_by_pieces): No longer static. Remove prototype.
+ * rtl.h (move_by_pieces): Add extern prototype.
+ * mips.c (expand_block_move): Handle aligned straight line copy by
+ calling move_by_pieces.
+
* expr.c (expand_expr): Allow assignments from TImode PARM_DECLs
and VAR_DECLs.
if (TARGET_MEMCPY)
block_move_call (dest_reg, src_reg, bytes_rtx);
+ else if (constp && bytes <= 2 * MAX_MOVE_BYTES
+ && align == UNITS_PER_WORD)
+ move_by_pieces (orig_dest, orig_src, bytes, align);
+
else if (constp && bytes <= 2 * MAX_MOVE_BYTES)
emit_insn (gen_movstrsi_internal (change_address (orig_dest, BLKmode,
dest_reg),
static rtx enqueue_insn PROTO((rtx, rtx));
static int queued_subexp_p PROTO((rtx));
static void init_queue PROTO((void));
-static void move_by_pieces PROTO((rtx, rtx, int, int));
static int move_by_pieces_ninsns PROTO((unsigned int, int));
static void move_by_pieces_1 PROTO((rtx (*) (rtx, ...), enum machine_mode,
struct move_by_pieces *));
through protect_from_queue before calling.
ALIGN (in bytes) is maximum alignment we can assume. */
-static void
+void
move_by_pieces (to, from, len, align)
rtx to, from;
int len, align;
/* In expr.c */
extern void init_expr_once PROTO ((void));
+extern void move_by_pieces PROTO ((rtx, rtx, int, int));
+
/* In stupid.c */
#ifdef BUFSIZ