aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-08-29 12:20:01 -0700
committerRichard Henderson <rth@gcc.gnu.org>2002-08-29 12:20:01 -0700
commit44bb111a78b9636b80d4b40ef57b8b47a375c525 (patch)
tree44fb6efc1ab10d4d91c0a9304f749fed8e7f2159 /gcc/expr.h
parent08b3d1047a7cbcfc963e45063b763c38128374fc (diff)
downloadgcc-44bb111a78b9636b80d4b40ef57b8b47a375c525.zip
gcc-44bb111a78b9636b80d4b40ef57b8b47a375c525.tar.gz
gcc-44bb111a78b9636b80d4b40ef57b8b47a375c525.tar.bz2
expr.h (enum block_op_methods): New.
* expr.h (enum block_op_methods): New. (emit_block_move): Update prototype. * expr.c (block_move_libcall_safe_for_call_parm): New. (emit_block_move_via_loop): New. (emit_block_move): Use them. New argument METHOD. (emit_push_insn): Always respect the given alignment. (expand_assignment): Update call to emit_block_move. (store_expr, store_field, expand_expr): Likewise. * builtins.c (expand_builtin_apply): Likewise. (expand_builtin_memcpy, expand_builtin_va_copy): Likewise. * function.c (expand_function_end): Likewise. * config/sh/sh.c (sh_initialize_trampoline): Likewise. * config/sparc/sparc.c (sparc_va_arg): Likewise. * calls.c (expand_call, emit_library_call_value_1): Likewise. (save_fixed_argument_area): Use emit_block_move with BLOCK_OP_CALL_PARM instead of move_by_pieces. (restore_fixed_argument_area): Likewise. (store_one_arg): Fix alignment parameter to emit_push_insn. From-SVN: r56661
Diffstat (limited to 'gcc/expr.h')
-rw-r--r--gcc/expr.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/expr.h b/gcc/expr.h
index 76b5c80..c3a1009 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -394,7 +394,15 @@ extern rtx convert_modes PARAMS ((enum machine_mode, enum machine_mode,
rtx, int));
/* Emit code to move a block Y to a block X. */
-extern rtx emit_block_move PARAMS ((rtx, rtx, rtx));
+
+enum block_op_methods
+{
+ BLOCK_OP_NORMAL,
+ BLOCK_OP_CALL_PARM,
+ BLOCK_OP_NO_LIBCALL
+};
+
+extern rtx emit_block_move PARAMS ((rtx, rtx, rtx, enum block_op_methods));
/* Copy all or part of a value X into registers starting at REGNO.
The number of registers to be filled is NREGS. */