On Mon, Nov 18, 2013 at 9:16 AM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Mon, Nov 18, 2013 at 6:19 AM, H.J. Lu <hjl.to...@gmail.com> wrote: >> On Sun, Nov 17, 2013 at 3:38 PM, Jan Hubicka <hubi...@ucw.cz> wrote: >>> Hi, >>> this is version I comitted. It also adds a testcase and enables the support >>> in i386 backend. >>> >>> Honza >>> >>> * 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. >>> >>> * testsuite/gcc.target/i386/memcpy-2.c: New testcase. >> >> The new testcase fails for me on x86 and x86-64: >> >> FAIL: gcc.target/i386/memcpy-2.c scan-assembler-not memcpy >> FAIL: gcc.target/i386/memcpy-2.c (test for excess errors) >> > > I got > > [hjl@gnu-6 gcc]$ /export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc > -B/export/build/gnu/gcc/build-x86_64-linux/gcc/ > /export/gnu/import/git/gcc/gcc/testsuite/gcc.target/i386/memcpy-2.c > -fno-diagnostics-show-caret -fdiagnostics-color=never -O2 > -ffat-lto-objects -ffat-lto-objects -S -m32 -o memcpy-2.s > /export/gnu/import/git/gcc/gcc/testsuite/gcc.target/i386/memcpy-2.c: > In function ‘t’: > /export/gnu/import/git/gcc/gcc/testsuite/gcc.target/i386/memcpy-2.c:10:5: > warning: incompatible implicit declaration of built-in function > ‘memcpy’ [enabled by default] > [hjl@gnu-6 gcc]$ cat memcpy-2.s > .file "memcpy-2.c" > .text > .p2align 4,,15 > .globl t > .type t, @function > t: > .LFB0: > .cfi_startproc > subl $28, %esp > .cfi_def_cfa_offset 32 > movl 32(%esp), %eax > cmpl $9, %eax > ja .L3 > movl %eax, 8(%esp) > movl b, %eax > movl %eax, 4(%esp) > movl a, %eax > movl %eax, (%esp) > call memcpy > .L3: > addl $28, %esp > .cfi_def_cfa_offset 4 > ret > .cfi_endproc > > > /* { dg-final { scan-assembler-not "memcpy" } } */ > > will also match > > .file "memcpy-2.c" > > -- > H.J.
I opened: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59175 -- H.J.