https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98114

--- Comment #1 from Hongtao.liu <crazylht at gmail dot com> ---
Looking at testcase there's are pointer type conversion

void
CALC (double *s1, double *s2, double *r)
{
  int i;
  long long tmp;

  for (i = 0; i < SIZE; i++)
    {
      tmp = (~(*(long long *) &s1[i])) & (*(long long *) &s2[i]);
      r[i] = *(double *) &tmp;
    }
}

modified   gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-2.c
@@ -9,6 +9,7 @@
 #include "avx512f-mask-type.h"

 void
+__attribute__ ((optimize ("no-strict-aliasing"), noinline))
 CALC (double *s1, double *s2, double *r)
 {
   int i;
modified   gcc/testsuite/gcc.target/i386/avx512dq-vandpd-2.c
@@ -9,6 +9,7 @@
 #include "avx512f-mask-type.h"

 void
+__attribute__ ((optimize ("no-strict-aliasing"), noinline))
 CALC (double *s1, double *s2, double *r)
 {
   int i;
modified   gcc/testsuite/gcc.target/i386/avx512dq-vorpd-2.c
@@ -9,6 +9,7 @@
 #include "avx512f-mask-type.h"

 void
+__attribute__ ((optimize ("no-strict-aliasing"), noinline))
 CALC (double *src1, double *src2, double *dst)
 {
   int i;
modified   gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-2.c
@@ -9,6 +9,7 @@
 #include "avx512f-mask-type.h"

 void
+__attribute__ ((optimize ("no-strict-aliasing"), noinline))
 CALC (double *src1, double *src2, double *dst)
 {
   int i;

Could pass testcase.

Reply via email to