[Bug middle-end/88739] Big-endian union bug

wilco at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jan 7 16:28:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88739

--- Comment #3 from Wilco <wilco at gcc dot gnu.org> ---
(In reply to Richard Earnshaw from comment #2)
> >   _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.

So the question becomes what format is this in?

  <unnamed-unsigned:30> _2;

Is it big-endian memory format (so value is in top 30 bits) or simply a 30-bit
value in a virtual register?


More information about the Gcc-bugs mailing list