http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51007
--- Comment #4 from Kai Tietz <ktietz at gcc dot gnu.org> 2011-11-07 12:00:49 UTC --- The issue is caused by bitfield layout. For mingw targets the -mms-bitfields option is for 4.7 active by default. So the mixture of different sized types in union is leading to this behavior. You can see that result becomes ok, if you are specifying to union/struct the attribute gcc_struct. Cheers, Kai