ENUM_BITFIELD and -fshort-enums

Daniel Jacobowitz drow@false.org
Thu Dec 9 18:00:00 GMT 2004


On Thu, Dec 09, 2004 at 12:46:14PM -0500, Daniel Jacobowitz wrote:
> I tried to build a native arm-unknown-linux-gnueabi compiler yesterday.
> The only major problem was the fact that EABI defaults to
> -fshort-enums.  rtl.h has this:
> 
>   /* The kind of expression this is.  */
>   ENUM_BITFIELD(rtx_code) code: 16;
> 
> But since there are only 164 RTL codes at present, with -fshort-enums
> the underlying type of enum rtx_code is "char".  So GCC gives an error
> that the bitfield is wider than its type.
> 
> For now I'm just using an x-linuxeabi file which builds GCC using
> -fno-short-enums, but that's not a good solution.  Should this bitfield
> be allowed?

Other alternative fixes:

  - Add an RTX code with value 65535 to force the enum to be large
    enough.
  - Shrink the bitfield and leave 8 bits of padding in struct rtx_def.

-- 
Daniel Jacobowitz



More information about the Gcc mailing list