https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53101
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Target Milestone|--- |8.0 Status|NEW |RESOLVED --- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> --- GCC 5+ just produces a stack increment/decrement but no stores (unlike 4.9.x). GCC 6+ is able to remove the stack increment/decrement. GCC 7+ uses BIT_FIELD_REF on the gimple level. GCC 8+ expands the BIT_FIELD_REF to use vec_select directly and get: (insn 6 5 7 (set (reg:TI 90) (vec_select:TI (subreg:V2TI (reg/v:V4DF 88 [ x ]) 0) (parallel [ (const_int 0 [0]) ]))) "/app/example.cpp":9 -1 (nil)) So this is fully fixed for GCC 8+ with incremental steps along the way.