https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88739
--- Comment #49 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > Just to remind where we're coming from - we have > > unData.strMemHead.b30AddrL = ulAddr >> 2; > > where this is a 30bit bitfield store (at bit offset % BITS_PER_UNIT == 0) > from a unsigned :30 register. Via the union we now try to load > 8 bits from memory contained within that 30 bits and try to extract those > from the unsigned :30 register instead (with the goal to elide the > memory object). In which circumnstances can we view the RHS of the above > store as "proper" for applying the BIT_FIELD_REF as translated to the > LHS memory to the RHS register? I think that type_has_mode_precision_p would work and presumably not pessimize too much even on little-endian platforms.