https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108199
--- Comment #12 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > How are the bits numbered in there, IOW is bit 0 always the LSB or not? Answering to myself: no, they are numbered in memory order, which is problematic because, in the implementation model, stand-alone scalars do not have storage order and are only considered as values, so this breaks the model. I think that Andreas' latest patch does not work in the opposite case, namely a little-endian structure on a big-endian platform: dst$val_9 = _1; _2 = BIT_FIELD_REF <dst$val_9, 8, 0>; In this case BIT_FIELD_REF <dst$val_9, 8, 0> would refer to the MSB, but the assignment dst$val_9 = _1 assigns the interesting bit to the LSB as always for stand-alone scalar, so we would need to preserve the swapping.