Index: clang/lib/Headers/avx512bwintrin.h =================================================================== --- clang/lib/Headers/avx512bwintrin.h +++ clang/lib/Headers/avx512bwintrin.h @@ -221,12 +221,18 @@ static __inline__ void __DEFAULT_FN_ATTRS _store_mask32(__mmask32 *__A, __mmask32 __B) { - *(__mmask32 *)__A = __builtin_ia32_kmovd((__mmask32)__B); + struct __store_mask32 { + __mmask32 __v; + } __attribute__((__packed__, __may_alias__)); + ((struct __store_mask32 *)__A)->__v = __builtin_ia32_kmovd((__mmask32)__B); } static __inline__ void __DEFAULT_FN_ATTRS _store_mask64(__mmask64 *__A, __mmask64 __B) { - *(__mmask64 *)__A = __builtin_ia32_kmovq((__mmask64)__B); + struct __store_mask64 { + __mmask64 __v; + } __attribute__((__packed__, __may_alias__)); + ((struct __store_mask64 *)__A)->__v = __builtin_ia32_kmovq((__mmask64)__B); } /* Integer compare */ Index: clang/lib/Headers/avx512fintrin.h =================================================================== --- clang/lib/Headers/avx512fintrin.h +++ clang/lib/Headers/avx512fintrin.h @@ -8445,7 +8445,10 @@ static __inline__ void __DEFAULT_FN_ATTRS _store_mask16(__mmask16 *__A, __mmask16 __B) { - *(__mmask16 *)__A = __builtin_ia32_kmovw((__mmask16)__B); + struct __store_mask16 { + __mmask16 __v; + } __attribute__((__packed__, __may_alias__)); + ((struct __store_mask16 *)__A)->__v = __builtin_ia32_kmovw((__mmask16)__B); } static __inline__ void __DEFAULT_FN_ATTRS512 Index: clang/test/CodeGen/X86/avx512bw-builtins.c =================================================================== --- clang/test/CodeGen/X86/avx512bw-builtins.c +++ clang/test/CodeGen/X86/avx512bw-builtins.c @@ -364,13 +364,13 @@ void test_store_mask32(__mmask32 *A, __m512i B, __m512i C) { // CHECK-LABEL: @test_store_mask32 - // CHECK: store i32 %{{.*}}, ptr %{{.*}} + // CHECK: store i32 %{{.*}}, ptr %{{.*}}, align 1 _store_mask32(A, _mm512_cmpneq_epu16_mask(B, C)); } void test_store_mask64(__mmask64 *A, __m512i B, __m512i C) { // CHECK-LABEL: @test_store_mask64 - // CHECK: store i64 %{{.*}}, ptr %{{.*}} + // CHECK: store i64 %{{.*}}, ptr %{{.*}}, align 1 _store_mask64(A, _mm512_cmpneq_epu8_mask(B, C)); } Index: clang/test/CodeGen/X86/avx512f-builtins.c =================================================================== --- clang/test/CodeGen/X86/avx512f-builtins.c +++ clang/test/CodeGen/X86/avx512f-builtins.c @@ -8527,7 +8527,7 @@ void test_store_mask16(__mmask16 *A, __m512i B, __m512i C) { // CHECK-LABEL: @test_store_mask16 // CHECK: bitcast <16 x i1> %{{.*}} to i16 - // CHECK: store i16 %{{.*}}, ptr %{{.*}} + // CHECK: store i16 %{{.*}}, ptr %{{.*}}, align 1 _store_mask16(A, _mm512_cmpneq_epu32_mask(B, C)); }