From: Jakub Jelinek Date: Sat, 23 Jan 2021 08:41:58 +0000 (+0100) Subject: rs6000: Fix up __m64 typedef in mmintrin.h [PR97301] X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c63f091db89a56ae56b2bfa2ba4d9e956bd9693f;p=gcc.git 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 PR testsuite/97301 * config/rs6000/mmintrin.h (__m64): Add __may_alias__ attribute. --- diff --git a/gcc/config/rs6000/mmintrin.h b/gcc/config/rs6000/mmintrin.h index 60d1a25d64b..0bd929c5afe 100644 --- a/gcc/config/rs6000/mmintrin.h +++ b/gcc/config/rs6000/mmintrin.h @@ -58,7 +58,8 @@ #include /* The Intel API is flexible enough that we must allow aliasing with other vector types, and their scalar components. */ -typedef __attribute__ ((__aligned__ (8))) unsigned long long __m64; +typedef __attribute__ ((__aligned__ (8), + __may_alias__)) unsigned long long __m64; typedef __attribute__ ((__aligned__ (8))) union