http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52991
daniel.c.klauer at web dot de changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |daniel.c.klauer at web dot | |de --- Comment #1 from daniel.c.klauer at web dot de 2012-08-18 03:37:01 UTC --- I think I may have encountered this issue aswell. For example, given the following example program: #include <stdio.h> #include <wchar.h> struct A { short s; struct { int i; }; } __attribute__((__packed__)); struct B { short s; struct { int i; } __attribute__((__packed__)); } __attribute__((__packed__)); struct C { struct { int i; }; short s; } __attribute__((__packed__)); int main() { printf("sizeof(struct A) == %i\n", (int)sizeof(struct A)); printf("sizeof(struct B) == %i\n", (int)sizeof(struct B)); printf("sizeof(struct C) == %i\n", (int)sizeof(struct C)); return 0; } with TDM-GCC's mingw32 gcc 4.6.1, all sizes are 6, and for comparison, with Ubuntu's i686-linux-gnu gcc 4.6.3, all sizes are 6. However, with mingw.org's gcc 4.7.0, sizeof(A) == 8. B and C still are 6, as expected; A on the other hand apparently is not being packed, despite the __attribute__((__packed__)).