On Tue, 19 Nov 2013, Jan Hubicka wrote:
> Hi,
> this patch fixes two issues with memcpy testcase - silences warning and
> updates
> the template as suggested by Uros in the PR. The testcase still fails on
> i386.
> This is because we end up with:
> ;; Function t (t, funcdef_no=0, decl_uid=1763, symbol_order=2)
>
> t (unsigned int c)
> {
> void * b.0_4;
> void * a.1_5;
>
> <bb 2>:
> if (c_2(D) <= 9)
> goto <bb 3>;
> else
> goto <bb 4>;
>
> <bb 3>:
> b.0_4 = b;
> a.1_5 = a;
> memcpy (a.1_5, b.0_4, c_2(D));
>
> <bb 4>:
> return;
>
> }
> and we have no useful value range on c_2 because assert_expr was removed,
> while in 64bit version there is a cast in bb 3 that preserves the info.
> Solving this is an independent (and I guess not terribly easy) problem.
Hmm, I thought Jakub fixed this already (with the checking whether
there are any uses of c_2(D) before the conditional)? Or is this
a different case?
Richard.
> Regtested x86_64-linux, will commit it shortly.
>
> Index: ChangeLog
> ===================================================================
> --- ChangeLog (revision 204984)
> +++ ChangeLog (working copy)
> @@ -1,3 +1,10 @@
> +2013-11-18 Jan Hubicka <[email protected]>
> + Uros Bizjak <[email protected]>
> +
> + PR middle-end/59175
> + * gcc.target/i386/memcpy-2.c: Fix template;
> + add +1 so the testcase passes at 32bit.
> +
> 2013-11-18 Dominique d'Humieres <[email protected]>
>
> * c-c++-common/cilk-plus/PS/reduction-3.c: Use stdlib.h.
> Index: gcc.target/i386/memcpy-2.c
> ===================================================================
> --- gcc.target/i386/memcpy-2.c (revision 204984)
> +++ gcc.target/i386/memcpy-2.c (working copy)
> @@ -1,11 +1,11 @@
> /* { dg-do compile } */
> /* { dg-options "-O2" } */
> -/* Memcpy should be inlined because block size is known. */
> -/* { dg-final { scan-assembler-not "memcpy" } } */
> void *a;
> void *b;
> t(unsigned int c)
> {
> if (c<10)
> - memcpy (a,b,c);
> + __builtin_memcpy (a,b,c+1);
> }
> +/* Memcpy should be inlined because block size is known. */
> +/* { dg-final { scan-assembler-not "(jmp|call)\[\\t \]*memcpy" } } */
>
>
--
Richard Biener <[email protected]>
SUSE / SUSE Labs
SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746
GF: Jeff Hawn, Jennifer Guild, Felix Imend"orffer