https://gcc.gnu.org/bugzilla/show_bug.cgi?id=28367
Marc Glisse <glisse at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |glisse at gcc dot gnu.org --- Comment #6 from Marc Glisse <glisse at gcc dot gnu.org> --- Created attachment 33674 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33674&action=edit rough patch It needs more work (seems more complicated than it should be), but at least it managed to produce what I expected for: #include <x86intrin.h> union u { __v4sf v; float a[4]; }; float f(__v4sf x){ u t; t.v=x; return t.a[2]; }