rs6000: Fix up __m64 typedef in mmintrin.h [PR97301]
authorJakub Jelinek <jakub@redhat.com>
Sat, 23 Jan 2021 08:41:58 +0000 (09:41 +0100)
committerJakub Jelinek <jakub@redhat.com>
Sat, 23 Jan 2021 08:41:58 +0000 (09:41 +0100)
commitc63f091db89a56ae56b2bfa2ba4d9e956bd9693f
treec25c6d8add37e5841cae1f55c104280bb6c46d7a
parenta8cef3cba6945730c69e15dcdad726e74b50fe58
rs6000: Fix up __m64 typedef in mmintrin.h [PR97301]

The x86 __m64 type is defined as:
/* The Intel API is flexible enough that we must allow aliasing with other
   vector types, and their scalar components.  */
typedef int __m64 __attribute__ ((__vector_size__ (8), __may_alias__));
and so matches the comment above it in that reads and stores through
pointers to __m64 can alias anything.
But in the rs6000 headers that is the case only for __m128, but not __m64.

The following patch adds that attribute, which fixes the
FAIL: gcc.target/powerpc/sse-movhps-1.c execution test
FAIL: gcc.target/powerpc/sse-movlps-1.c execution test
regressions that appeared when Honza improved ipa-modref.

2021-01-23  Jakub Jelinek  <jakub@redhat.com>

PR testsuite/97301
* config/rs6000/mmintrin.h (__m64): Add __may_alias__ attribute.
gcc/config/rs6000/mmintrin.h