Commit 3b6f75e2 by Jim Wilson

(emit_block_move): When call emit_libary_call for bcopy,

pass arguments using correct types and modes.
(emit_push_insn, expand_assignment): Likewise.
(clear_storage, store_expr): Likewise for memset and bzero.
(store_constructor): Likewise for memset.

From-SVN: r10808
parent 3ea4ff2e
...@@ -1685,9 +1685,9 @@ emit_block_move (x, y, size, align) ...@@ -1685,9 +1685,9 @@ emit_block_move (x, y, size, align)
emit_library_call (bcopy_libfunc, 0, emit_library_call (bcopy_libfunc, 0,
VOIDmode, 3, XEXP (y, 0), Pmode, VOIDmode, 3, XEXP (y, 0), Pmode,
XEXP (x, 0), Pmode, XEXP (x, 0), Pmode,
convert_to_mode (TYPE_MODE (sizetype), size, convert_to_mode (TYPE_MODE (integer_type_node), size,
TREE_UNSIGNED (sizetype)), TREE_UNSIGNED (integer_type_node)),
TYPE_MODE (sizetype)); TYPE_MODE (integer_type_node));
#endif #endif
} }
} }
...@@ -1841,7 +1841,8 @@ clear_storage (object, size) ...@@ -1841,7 +1841,8 @@ clear_storage (object, size)
#ifdef TARGET_MEM_FUNCTIONS #ifdef TARGET_MEM_FUNCTIONS
emit_library_call (memset_libfunc, 0, emit_library_call (memset_libfunc, 0,
VOIDmode, 3, VOIDmode, 3,
XEXP (object, 0), Pmode, const0_rtx, ptr_mode, XEXP (object, 0), Pmode,
const0_rtx, TYPE_MODE (integer_type_node),
convert_to_mode (TYPE_MODE (sizetype), convert_to_mode (TYPE_MODE (sizetype),
size, TREE_UNSIGNED (sizetype)), size, TREE_UNSIGNED (sizetype)),
TYPE_MODE (sizetype)); TYPE_MODE (sizetype));
...@@ -1849,9 +1850,10 @@ clear_storage (object, size) ...@@ -1849,9 +1850,10 @@ clear_storage (object, size)
emit_library_call (bzero_libfunc, 0, emit_library_call (bzero_libfunc, 0,
VOIDmode, 2, VOIDmode, 2,
XEXP (object, 0), Pmode, XEXP (object, 0), Pmode,
convert_to_mode (TYPE_MODE (sizetype), convert_to_mode (TYPE_MODE (integer_type_node),
size, TREE_UNSIGNED (sizetype)), size,
TYPE_MODE (sizetype)); TREE_UNSIGNED (integer_type_node)),
TYPE_MODE (integer_type_node));
#endif #endif
} }
else else
...@@ -2321,9 +2323,10 @@ emit_push_insn (x, mode, type, size, align, partial, reg, extra, ...@@ -2321,9 +2323,10 @@ emit_push_insn (x, mode, type, size, align, partial, reg, extra,
#else #else
emit_library_call (bcopy_libfunc, 0, emit_library_call (bcopy_libfunc, 0,
VOIDmode, 3, XEXP (xinner, 0), Pmode, temp, Pmode, VOIDmode, 3, XEXP (xinner, 0), Pmode, temp, Pmode,
convert_to_mode (TYPE_MODE (sizetype), convert_to_mode (TYPE_MODE (integer_type_node),
size, TREE_UNSIGNED (sizetype)), size,
TYPE_MODE (sizetype)); TREE_UNSIGNED (integer_type_node)),
TYPE_MODE (integer_type_node));
#endif #endif
OK_DEFER_POP; OK_DEFER_POP;
} }
...@@ -2642,9 +2645,9 @@ expand_assignment (to, from, want_value, suggest_reg) ...@@ -2642,9 +2645,9 @@ expand_assignment (to, from, want_value, suggest_reg)
emit_library_call (bcopy_libfunc, 0, emit_library_call (bcopy_libfunc, 0,
VOIDmode, 3, XEXP (from_rtx, 0), Pmode, VOIDmode, 3, XEXP (from_rtx, 0), Pmode,
XEXP (to_rtx, 0), Pmode, XEXP (to_rtx, 0), Pmode,
convert_to_mode (TYPE_MODE (sizetype), convert_to_mode (TYPE_MODE (integer_type_node),
size, TREE_UNSIGNED (sizetype)), size, TREE_UNSIGNED (integer_type_node)),
TYPE_MODE (sizetype)); TYPE_MODE (integer_type_node));
#endif #endif
preserve_temp_slots (to_rtx); preserve_temp_slots (to_rtx);
...@@ -2921,11 +2924,20 @@ store_expr (exp, target, want_value) ...@@ -2921,11 +2924,20 @@ store_expr (exp, target, want_value)
if (size != const0_rtx) if (size != const0_rtx)
{ {
#ifdef TARGET_MEM_FUNCTIONS #ifdef TARGET_MEM_FUNCTIONS
emit_library_call (memset_libfunc, 0, VOIDmode, 3, addr, emit_library_call (memset_libfunc, 0, VOIDmode, 3,
Pmode, const0_rtx, Pmode, size, ptr_mode); addr, Pmode,
const0_rtx, TYPE_MODE (integer_type_node),
convert_to_mode (TYPE_MODE (sizetype),
size,
TREE_UNSIGNED (sizetype)),
TYPE_MODE (sizetype));
#else #else
emit_library_call (bzero_libfunc, 0, VOIDmode, 2, emit_library_call (bzero_libfunc, 0, VOIDmode, 2,
addr, Pmode, size, ptr_mode); addr, Pmode,
convert_to_mode (TYPE_MODE (integer_type_node),
size,
TREE_UNSIGNED (integer_type_node)),
TYPE_MODE (integer_type_node));
#endif #endif
} }
...@@ -3308,9 +3320,9 @@ store_constructor (exp, target) ...@@ -3308,9 +3320,9 @@ store_constructor (exp, target)
VOIDmode, 3, VOIDmode, 3,
plus_constant (XEXP (targetx, 0), startb), plus_constant (XEXP (targetx, 0), startb),
Pmode, Pmode,
constm1_rtx, Pmode, constm1_rtx, TYPE_MODE (integer_type_node),
GEN_INT ((endb - startb) / BITS_PER_UNIT), GEN_INT ((endb - startb) / BITS_PER_UNIT),
Pmode); TYPE_MODE (sizetype));
} }
else else
#endif #endif
......
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