https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102022
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |INVALID --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- And yes it is. You write head as both char* and then read it as head*. That is an alias violation for sure. Use either -fno-strict-aliasing go figure out a way to use an union or memcpy.