https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120342
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #1) > This is an aliasing violation. > > You write to p via int and then again via the struct and then read it back > via int. I should say write partially via the struct. It does not matter that the field of the struct is char or not, you are still writing via the struct type.