Skip to content

Commit

Permalink
rs6000: Fix up __m64 typedef in mmintrin.h [PR97301]
Browse files Browse the repository at this point in the history
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  <[email protected]>

	PR testsuite/97301
	* config/rs6000/mmintrin.h (__m64): Add __may_alias__ attribute.
  • Loading branch information
jakubjelinek committed Jan 23, 2021
1 parent a8cef3c commit c63f091
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion gcc/config/rs6000/mmintrin.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@
#include <altivec.h>
/* 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
Expand Down

0 comments on commit c63f091

Please sign in to comment.