aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.h
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2013-11-18 00:32:12 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2013-11-17 23:32:12 +0000
commit3918b10802ce96c0c8cf477a0695856dc8d0919a (patch)
tree947c4bdd1ca87f99c679541fdf303cfef4a00776 /gcc/expr.h
parent2048a057063239900ff4b614c854f5a53bab55de (diff)
downloadgcc-3918b10802ce96c0c8cf477a0695856dc8d0919a.zip
gcc-3918b10802ce96c0c8cf477a0695856dc8d0919a.tar.gz
gcc-3918b10802ce96c0c8cf477a0695856dc8d0919a.tar.bz2
md.texi (setmem, movstr): Update documentation.
* doc/md.texi (setmem, movstr): Update documentation. * builtins.c (determine_block_size): New function. (expand_builtin_memcpy): Use it and pass it to emit_block_move_hints. (expand_builtin_memset_args): Use it and pass it to set_storage_via_setmem. * expr.c (emit_block_move_via_movmem): Add min_size/max_size parameters; update call to expander. (emit_block_move_hints): Add min_size/max_size parameters. (clear_storage_hints): Likewise. (set_storage_via_setmem): Likewise. (clear_storage): Update. * expr.h (emit_block_move_hints, clear_storage_hints, set_storage_via_setmem): Update prototype. * i386.c (ix86_expand_set_or_movmem): Add bounds; export. (ix86_expand_movmem, ix86_expand_setmem): Remove. (ix86_expand_movmem, ix86_expand_setmem): Remove. * i386.md (movmem, setmem): Pass parameters. * gcc.target/i386/memcpy-2.c: New testcase. From-SVN: r204926
Diffstat (limited to 'gcc/expr.h')
-rw-r--r--gcc/expr.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/expr.h b/gcc/expr.h
index 2923b81..ae76091 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -300,7 +300,9 @@ extern void init_block_clear_fn (const char *);
extern rtx emit_block_move (rtx, rtx, rtx, enum block_op_methods);
extern rtx emit_block_move_via_libcall (rtx, rtx, rtx, bool);
extern rtx emit_block_move_hints (rtx, rtx, rtx, enum block_op_methods,
- unsigned int, HOST_WIDE_INT);
+ unsigned int, HOST_WIDE_INT,
+ unsigned HOST_WIDE_INT,
+ unsigned HOST_WIDE_INT);
extern bool emit_storent_insn (rtx to, rtx from);
/* Copy all or part of a value X into registers starting at REGNO.
@@ -361,13 +363,17 @@ extern void use_group_regs (rtx *, rtx);
If OBJECT has BLKmode, SIZE is its length in bytes. */
extern rtx clear_storage (rtx, rtx, enum block_op_methods);
extern rtx clear_storage_hints (rtx, rtx, enum block_op_methods,
- unsigned int, HOST_WIDE_INT);
+ unsigned int, HOST_WIDE_INT,
+ unsigned HOST_WIDE_INT,
+ unsigned HOST_WIDE_INT);
/* The same, but always output an library call. */
rtx set_storage_via_libcall (rtx, rtx, rtx, bool);
/* Expand a setmem pattern; return true if successful. */
extern bool set_storage_via_setmem (rtx, rtx, rtx, unsigned int,
- unsigned int, HOST_WIDE_INT);
+ unsigned int, HOST_WIDE_INT,
+ unsigned HOST_WIDE_INT,
+ unsigned HOST_WIDE_INT);
extern unsigned HOST_WIDE_INT move_by_pieces_ninsns (unsigned HOST_WIDE_INT,
unsigned int,