https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67609
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- It does the "correct" thing for #include <emmintrin.h> __m128d reg; void set_lower(float b) { float v[4]; _mm_store_pd((double *)v, reg); v[0] = b; reg = _mm_load_pd((double *)v); }