On Tue, Jul 17, 2012 at 8:23 AM, Peter Maydell <peter.mayd...@linaro.org> wrote: > I think our current position is "don't use bitfields for anything that > has to match an externally defined layout". This is because on Windows > we have to compile with -mms-bitfields [for compatibility with Windows > APIs], which can lead to different layouts for structs with bitfields. > For instance in your struct: > >> + struct { >> + unsigned long long mantissa:63; >> + unsigned int one:1; >> + unsigned int exponent:15; >> + unsigned int negative:1; >> + unsigned int empty:16; >> + } ieee; > > the Windows build would not put the fields 'mantissa' and > 'one' in the same 64 bit word, it would insert a padding bit. Since floatx80 is not part of a Windows API (in fact, it's not part of any API, it's in a test), could I give the structs an attribute of "gcc_struct"?
http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html (under "6.36.5 i386 Variable Attributes")