http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49084

Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |NEW

--- Comment #17 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-12-11 
08:29:01 UTC ---
> The culprit is the struct Flag_Word (gcc/ada/atree.h:116), included in Node,
> which increased from 4 bytes to 6 bytes:
> 
> struct Flag_Word
> {
>   Boolean      flag73        :  1;
>   Boolean      flag74        :  1;
>   Boolean      flag75        :  1;
>   Boolean      flag76        :  1;
>   Boolean      flag77        :  1;
>   Boolean      flag78        :  1;
>   Boolean      flag79        :  1;
>   Boolean      flag80        :  1;
>   Boolean      flag81        :  1;
>   Boolean      flag82        :  1;
>   Boolean      flag83        :  1;
>   Boolean      flag84        :  1;
>   Boolean      flag85        :  1;
>   Boolean      flag86        :  1;
>   Boolean      flag87        :  1;
>   Boolean      flag88        :  1;
>   Boolean      flag89        :  1;
>   Boolean      flag90        :  1;
>   Boolean      flag91        :  1;
>   Boolean      flag92        :  1;
>   Boolean      flag93        :  1;
>   Boolean      flag94        :  1;
>   Boolean      flag95        :  1;
>   Boolean      flag96        :  1;
>   Short        convention   :  8;
> };
> 
> On MinGW, the bitfield packing convention has changed in GCC 4.7: it now
> follows the Microsoft compiler (-mms-bitfields). Since the size of the
> "convention" field (16 bit short) is different from the previous one (8 bit
> unsigned char), padding is added until it starts on a new 16 bit boundary.

Nice work!

> Indeed, rebuilding GCC with make 'BOOT_CFLAGS=-g -O2 -mno-ms-bitfields' allows
> the build to proceed to completion. Changing Short to Byte in Flag_Word also
> works.

Let's do the latter.  Would you mind posting a patch on gcc-patches?  TIA.

Reply via email to