diff options
author | sandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-08-24 23:54:05 +0000 |
---|---|---|
committer | sandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-08-24 23:54:05 +0000 |
commit | 4b297e2e8e39dbf2c0c3ac6c00da3c3f4ac0f1e5 (patch) | |
tree | 6895f19a8975ec8b4b0758ed56b3ed5a18bd56e7 /gcc/doc | |
parent | b1a2195b07366269cda893d9a06007477264f680 (diff) | |
download | gcc-4b297e2e8e39dbf2c0c3ac6c00da3c3f4ac0f1e5.tar.gz |
2007-08-24 Sandra Loosemore <sandra@codesourcery.com>
Nigel Stephens <nigel@mips.com>
PR target/11787
gcc/
* doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
(STORE_BY_PIECES_P): No longer applies to __builtin_memset.
* expr.c (SET_BY_PIECES_P): Define.
(can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
(store_expr): Pass MEMSETP argument to can_store_by_pieces and
store_by_pieces.
* expr.h (SET_RATIO): Define.
(can_store_by_pieces, store_by_pieces): Update prototypes.
* builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
can_store_by_pieces/store_by_pieces.
(expand_builtin_memcpy_args): Likewise.
(expand_builtin_strncpy): Likewise.
(expand_builtin_memset_args): Likewise. Also remove special case
for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
decide what to do instead.
* value-prof.c (tree_stringops_transform): Pass MEMSETP argument
to can_store_by_pieces.
* config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
* config/s390/s390.h (SET_BY_PIECES_P): Likewise.
* config/mips/mips.opt (mmemcpy): Change from Var to Mask.
* config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
* config/mips/mips.h (MIPS_CALL_RATIO): Define.
(MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
(STORE_BY_PIECES_P): Define.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127790 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/tm.texi | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 0ec10c5949d..a913b8058c6 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -5897,12 +5897,30 @@ will be used. Defaults to 1 if @code{move_by_pieces_ninsns} returns less than @code{CLEAR_RATIO}. @end defmac +@defmac SET_RATIO +The threshold of number of scalar move insns, @emph{below} which a sequence +of insns should be generated to set memory to a constant value, instead of +a block set insn or a library call. +Increasing the value will always make code faster, but +eventually incurs high cost in increased code size. + +If you don't define this, it defaults to the value of @code{MOVE_RATIO}. +@end defmac + +@defmac SET_BY_PIECES_P (@var{size}, @var{alignment}) +A C expression used to determine whether @code{store_by_pieces} will be +used to set a chunk of memory to a constant value, or whether some +other mechanism will be used. Used by @code{__builtin_memset} when +storing values other than constant zero. +Defaults to 1 if @code{move_by_pieces_ninsns} returns less +than @code{SET_RATIO}. +@end defmac + @defmac STORE_BY_PIECES_P (@var{size}, @var{alignment}) A C expression used to determine whether @code{store_by_pieces} will be -used to set a chunk of memory to a constant value, or whether some other -mechanism will be used. Used by @code{__builtin_memset} when storing -values other than constant zero and by @code{__builtin_strcpy} when -when called with a constant source string. +used to set a chunk of memory to a constant string value, or whether some +other mechanism will be used. Used by @code{__builtin_strcpy} when +called with a constant source string. Defaults to 1 if @code{move_by_pieces_ninsns} returns less than @code{MOVE_RATIO}. @end defmac |