https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88739
--- Comment #2 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- > _23 = BIT_FIELD_REF <_2, 16, 0>; // WRONG: should be _2, 14, 0 _2 is declared as a 30-bit integer, so perhaps the statement is right, but expand needs to understand that the shift extract of the top 16 bits comes from a different location in big-endian.