On January 22, 2021 8:02:28 PM GMT+01:00, Jakub Jelinek <ja...@redhat.com> wrote: >On Mon, Sep 21, 2020 at 10:12:20AM +0200, Richard Biener wrote: >> On Mon, 21 Sep 2020, Jan Hubicka wrote: >> > these testcases now fails because they contains an invalid type >puning >> > that happens via const VALUE_TYPE *v pointer. Since the check >function >> > is noinline, modref is needed to trigger the wrong code. >> > I think it is easiest to fix it by no-strict-aliasing. >> > >> > Regtested x86_64-linux, OK? >> >> OK. >> >> > * gcc.target/i386/m128-check.h: Add no-strict aliasing to >> > CHECK_EXP macro. >> > >> > diff --git a/gcc/testsuite/gcc.target/i386/m128-check.h >b/gcc/testsuite/gcc.target/i386/m128-check.h >> > index 48b23328539..6f414b07be7 100644 >> > --- a/gcc/testsuite/gcc.target/i386/m128-check.h >> > +++ b/gcc/testsuite/gcc.target/i386/m128-check.h >> > @@ -78,6 +78,7 @@ typedef union >> > >> > #define CHECK_EXP(UINON_TYPE, VALUE_TYPE, FMT) \ >> > static int \ >> > +__attribute__((optimize ("no-strict-aliasing"))) \ >> > __attribute__((noinline, unused)) \ >> > check_##UINON_TYPE (UINON_TYPE u, const VALUE_TYPE *v) \ >> > { \ > >On powerpc64le the tests suffer from the exact same issue. > >Tested on powerpc64le-linux, ok for trunk?
Ok. Richard. >2021-01-22 Jakub Jelinek <ja...@redhat.com> > > * gcc.target/powerpc/m128-check.h (check_##UINON_TYPE): Add > optimize ("no-strict-aliasing") attribute. > >--- gcc/testsuite/gcc.target/powerpc/m128-check.h >+++ gcc/testsuite/gcc.target/powerpc/m128-check.h >@@ -85,6 +85,7 @@ typedef union > > #define CHECK_EXP(UINON_TYPE, VALUE_TYPE, FMT) \ > static int \ >+__attribute__((optimize ("no-strict-aliasing"))) \ > __attribute__((noinline, unused)) \ > check_##UINON_TYPE (UINON_TYPE u, const VALUE_TYPE *v) \ > { \ > > > Jakub