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?

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

Reply via email to