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.