https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113424
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |RESOLVED Resolution|--- |INVALID --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Without a name on the struct, a becomes a local variable. There is no aliasing issue here. You can see the same effect in C via using: ``` static struct b1 { char elt1; char bits; } *a; ``` Since a does not have an address taken, GCC assumes (correctly), it will only be modified from bar and will NOT be modified from an other variable/address.