Yep, that also works. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 64ffe8f..7efc3f1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-04-18 Grigoriy Kraynov <grigoriy.kray...@intel.com> + + * gcc.target/i386/avx2-vpop-check.h: volatility is casted away in + memcmp(). + 2013-04-18 Jakub Jelinek <ja...@redhat.com>
PR tree-optimization/56984 diff --git a/gcc/testsuite/gcc.target/i386/avx2-vpop-check.h b/gcc/testsuite/gcc.target/i386/avx2-vpop-check.h index 143b54da..02c879e 100644 --- a/gcc/testsuite/gcc.target/i386/avx2-vpop-check.h +++ b/gcc/testsuite/gcc.target/i386/avx2-vpop-check.h @@ -47,7 +47,7 @@ avx2_test (void) gen_pop (); check_pop (); - if (memcmp (c, c_ref, SIZE * sizeof (TYPE))) + if (memcmp (c, (void *) c_ref, SIZE * sizeof (TYPE))) abort(); } } The fix is pretty obvious, but still.. is it OK for trunk? thanks, Alexander 2013/4/11 Richard Biener <richard.guent...@gmail.com>: > On Thu, Apr 11, 2013 at 1:58 PM, Alexander Ivchenko <aivch...@gmail.com> > wrote: >> Hi, >> >> Usually <stdlib.h> does not include <string.h> but on bionic it is >> historically included. memcmp() reacts on a volatile argument >> differently, depending on whether <string.h> is included or not. If it >> is included, then the compiler will generate a warning: >> warning: passing argument 2 of 'memcmp' discards 'volatile' qualifier >> from pointer target type [enabled by default] >> >> In avx2-vpop-check.h we compare two arrays using memcmp(), and since >> one of them is declared as volatile we have test-fails because of that >> warning. The following patch reimplements the comparison using just >> for-loop: >> >> diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog >> index 943be90..9b08eb0 100644 >> --- a/gcc/testsuite/ChangeLog >> +++ b/gcc/testsuite/ChangeLog >> @@ -1,3 +1,7 @@ >> +2013-04-11 Grigoriy Kraynov <grigoriy.kray...@intel.com> >> + >> + * gcc.target/i386/avx2-vpop-check.h: memcmp() replaced by for loop. >> + >> 2013-04-11 Paolo Carlini <paolo.carl...@oracle.com> >> >> PR c++/54216 >> diff --git a/gcc/testsuite/gcc.target/i386/avx2-vpop-check.h >> b/gcc/testsuite/gcc.target/i386/avx2-vpop-check.h >> index 143b54da..921ed0b 100644 >> --- a/gcc/testsuite/gcc.target/i386/avx2-vpop-check.h >> +++ b/gcc/testsuite/gcc.target/i386/avx2-vpop-check.h >> @@ -47,7 +47,8 @@ avx2_test (void) >> gen_pop (); >> check_pop (); >> >> - if (memcmp (c, c_ref, SIZE * sizeof (TYPE))) >> - abort(); >> + for (i = 0; i < SIZE; ++i) >> + if (c[i] != c_ref[i]) >> + abort(); >> } >> } >> >> >> is it OK? > > Just cast away the volatileness? memcmp (c, (void *)c_ref, ...)? > > Richard. > >> thanks, >> Alexander