https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119253
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- >replicates the unaligned 32-bit >(uint32_t *)(flag_buf + (bit_pos >> 3)) Yes because this is undefined code. You need to use either a type which has an alignment of 1 or use memcpy (without a cast to the pointer of an aligned type).