When targeting GNU/MinGW for i386, the size of the "long double" data type is 12 bytes (while it is 8 bytes in MSVC). When building
with -mms-bitfields to have struct layouts match MSVC, data types are laid out in a struct with alignment according to their size. However, this doesn't make sense for the long double type, since it doesn't match MSVC at all, and aligning to a non-power-of-2 size triggers other asserts later.
This matches what GCC does, aligning a long double to 4 bytes in structs on i386 even when -mms-bitfields is specified.
This fixes asserts when using the max_align_t data type when building for MinGW/i386 with the -mms-bitfields flag.
Can you add an assertion that the size is a power of two unless it is the GNU environment?