> That doesn't explain why the bit value isn't normalized to be smaller > than BITS_PER_UNIT; any whole bytes could be incorporated into the > variably sized offset.
It can't be normalized to BITS_PER_UNIT, but to DECL_OFFSET_ALIGN since we are asserting that DECL_FIELD_OFFSET is aligned to DECL_OFFSET_ALIGN. See stor-layout.c: normalize_offset.