https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113395
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- Without fully lowering this on GIMPLE we could substitute the representative for the bitfield member in the MEM_EXPR and adjust adjust_address_1 to instead of using attrs.size to constrain the extent of the object designated by MEM_EXPR re-discover it. (I wonder if MEM_SIZE needs to be exact in a must-def way - ao_ref_from_mem certainly treats it that way instead of getting the size from the mode for non-BLKmode accesses) That said, lowering on GIMPLE is the way to go. Even iff only right before RTL expansion ...