re PR target/51134 (x86 memset/memcpy expansion is broken)
commit108879aa865b248369f3875aa032f6a8079e6b45
authorJan Hubicka <jh@suse.cz>
Fri, 18 Nov 2011 02:18:28 +0000 (18 03:18 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Fri, 18 Nov 2011 02:18:28 +0000 (18 02:18 +0000)
tree64a73a0ee2ea3895ec62cd12754303cd51ecc8e8
parent1d794721acc6b43208bfea764034835172805ebd
re PR target/51134 (x86 memset/memcpy expansion is broken)

PR bootstrap/51134
* i386.c (atom_cost): Fix 32bit memset description.
(expand_set_or_movmem_via_loop_with_iter): Output proper bounds check for epilogue loops.
(expand_movmem_epilogue): Handle epilogues up to size 15 w/o producing byte loop.
(decide_alg): sse_loop is not useable wthen SSE2 is disabled; when not optimizing always
use rep movsb or lincall; do not produce word sized loops when optimizing memset for
size (to avoid need for large constants).
(ix86_expand_movmem): Get into sync with ix86_expand_setmem; choose unroll factors
better; always do 128bit moves when producing SSE loops; do not produce loopy epilogue
when size is too small.
(promote_duplicated_reg_to_size): Do not look into desired alignments when
doing vector expansion.
(ix86_expand_setmem): Track better when promoted value is available; choose unroll factors
more sanely.; output loopy epilogue only when needed.

From-SVN: r181466
gcc/ChangeLog
gcc/config/i386/i386.c