https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84508
--- Comment #6 from Marc Glisse <glisse at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #5) > (In reply to Marc Glisse from comment #3) > > Workaround: define a typedef for double with > > __attribute__((__aligned__(1))), and use _mm_set_sd(*(newtype*)p), that's > > how it will likely be done if we change emmintrin.h." > > I don't think we really support misaligned loads from non-aggregates, there > have been lengthy discussions about that in the past. We already use typedef long long __m128i_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1))); _mm_loadu_si128 (__m128i_u const *__P) { return *__P; } So if that doesn't work, it needs fixing in a number of places...