This patch provides that bitfields are splitted even in case when current field is not legal integer type. For Example,
struct S3 {
unsigned long a1:28; unsigned long a2:4; unsigned long a3:12;
};
struct S4 {
unsigned long long b1:61; unsigned long b2:3; unsigned long b3:3;
};
At the moment, S3 is i48 type, and S4 is i72 type, with this change S3 is treated as i32 + 16, and S4 is treated as i32 + i32 + i8.
With this patch we avoid unaligned loads and stores, at least on MIPS architecture.