aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-03-31 16:01:17 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1993-03-31 16:01:17 -0500
commit0fa83258de63ad09dcba856b3ac43f9139fc2ff6 (patch)
treef3e0a2e0d672d06c92488615b1dc2e9545a48690
parent41e2a8bda05586c60114d9b3128c5f180566c727 (diff)
downloadgcc-0fa83258de63ad09dcba856b3ac43f9139fc2ff6.zip
gcc-0fa83258de63ad09dcba856b3ac43f9139fc2ff6.tar.gz
gcc-0fa83258de63ad09dcba856b3ac43f9139fc2ff6.tar.bz2
(emit_block_move, emit_push_insn, expand_assignment): Size passed to
memcpy/bcopy is SIZETYPE, not Pmode. From-SVN: r3966
-rw-r--r--gcc/expr.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index e51d297..0ca8fe0 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -1410,12 +1410,16 @@ emit_block_move (x, y, size, align)
emit_library_call (memcpy_libfunc, 0,
VOIDmode, 3, XEXP (x, 0), Pmode,
XEXP (y, 0), Pmode,
- convert_to_mode (Pmode, size, 1), Pmode);
+ convert_to_mode (TYPE_MODE (sizetype), size,
+ TREE_UNSIGNED (sizetype)),
+ TYPE_MODE (sizetype));
#else
emit_library_call (bcopy_libfunc, 0,
VOIDmode, 3, XEXP (y, 0), Pmode,
XEXP (x, 0), Pmode,
- convert_to_mode (Pmode, size, 1), Pmode);
+ convert_to_mode (TYPE_MODE (sizetype), size,
+ TREE_UNSIGNED (sizetype)),
+ TYPE_MODE (sizetype));
#endif
}
}
@@ -1991,11 +1995,15 @@ emit_push_insn (x, mode, type, size, align, partial, reg, extra,
#ifdef TARGET_MEM_FUNCTIONS
emit_library_call (memcpy_libfunc, 0,
VOIDmode, 3, temp, Pmode, XEXP (xinner, 0), Pmode,
- size, Pmode);
+ convert_to_mode (TYPE_MODE (sizetype),
+ size, TREE_UNSIGNED (sizetype)),
+ size, TYPE_MODE (sizetype));
#else
emit_library_call (bcopy_libfunc, 0,
VOIDmode, 3, XEXP (xinner, 0), Pmode, temp, Pmode,
- size, Pmode);
+ convert_to_mode (TYPE_MODE (sizetype),
+ size, TREE_UNSIGNED (sizetype)),
+ size, TYPE_MODE (sizetype));
#endif
OK_DEFER_POP;
}
@@ -2222,12 +2230,16 @@ expand_assignment (to, from, want_value, suggest_reg)
emit_library_call (memcpy_libfunc, 0,
VOIDmode, 3, XEXP (to_rtx, 0), Pmode,
XEXP (from_rtx, 0), Pmode,
- size, Pmode);
+ convert_to_mode (TYPE_MODE (sizetype),
+ size, TREE_UNSIGNED (sizetype)),
+ size, TYPE_MODE (sizetype));
#else
emit_library_call (bcopy_libfunc, 0,
VOIDmode, 3, XEXP (from_rtx, 0), Pmode,
XEXP (to_rtx, 0), Pmode,
- size, Pmode);
+ convert_to_mode (TYPE_MODE (sizetype),
+ size, TREE_UNSIGNED (sizetype)),
+ size, TYPE_MODE (sizetype));
#endif
preserve_temp_slots (to_rtx);