http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58570
--- Comment #9 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
Eric,
there is one more thing to consider for your proposed patch,
that is the damned -fstrict-volatile-bitfields:
if strict_volatile_bitfields>0 and the BIT_FIELD access
is _volatile_ it does not respect the BIT_FIELD_REPRESENTATIVE at all.
that means for instance:
struct
{
int a:24;
char b;
} s;
s.a=1;
s.b=2;
we have a INT32 read-modify-write over b.
even worse:
struct
{
int a:24;
} __attribute__((packed)) s;
s.a=1;
uses an (unaligned) INT32 read-modify-write and may overwrite
one member of an adjacent structure.
Note that at least the second example should no longer write beyond
the structure if this patch is applied:
http://gcc.gnu.org/ml/gcc-patches/2013-09/msg02058.html
So you should expect an alias if either field is a VOLATILE
bit-field access and flag_strict_volatile_bitfields > 0.
Bernd.