https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85923
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- This is because you are violating strict-aliasing rules by accessing *Ptr both via char * and unsigned char * which are two different pointer types. Declaring Ptr as [const] unsigned char * or compiling with -fno-strict-aliasing fixes your code.