On 18 January 2018 at 14:59, Philippe Mathieu-Daudé <f4...@amsat.org> wrote: > My comment was for a previous line: > > uint64_t frac : 64; > > I don't have enough compiler knowledge to be sure how this bitfield is > interpreted by the compiler. I understood the standard as bitfields are > for 'unsigned', and for IL32 we have sizeof(unsigned) = 32, so I wonder > how a :64 bitfield ends (bits >= 32 silently truncated?).
Defining a 64-bit bitfield is a bit pointless (why not just use uint64_t?) but there's nothing particularly different for IL32P64 here. The spec says the underlying type is _Bool, signed int, unsigned into, or an implementation defined type. For QEMU's hosts 'int' is always 32 bits, so if gcc and clang allow bitfields on a 64-bit type like uint64_t (as an impdef extension) then they should work on all hosts. (In any case it needs to either work or give a compiler error, silent truncation isn't an option.) thanks -- PMM