https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88963
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- You can try the attached patch, it "fixes" the issue on the GIMPLE side but appearantly the BIT_FIELD_REF stores go a weird path during RTL expansion and so we end up spilling again.