https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116997
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #3) > https://gcc.gnu.org/pipermail/gcc-patches/2020-January/537612.html > > I can't remember if the fix was committed or not ... It wasn't - would be good to check with that fixed. BIT_FIELD_REF and BIT_INSERT_EXPR work as if operating on memory which is why they only operate on mode-precision registers. So for BIT_INSERT_EXPR interpret as register spill to memory, do bit operation in memory, read back result to register. That in particular means bit numbering for big-endian differs from little-endian.