https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92768
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Slightly cleaned up testcase: #include <xmmintrin.h> struct S { int f[4]; }; __m128 foo (__m128 x) { const struct S a = { {0x00000000, 0x80000000, 0x00000000, 0x80000000}}; return _mm_xor_ps (x, _mm_load_ps ((float *) a.f)); } int main () { __m128 a = { -1.0f, -1.0f, -1.0f, -1.0f }; if (foo (a)[1] != 1.0) __builtin_abort (); return 0; }