https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85637
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- This is most likely because unsigned char is considered as aliasing any type. That means the write to this->m_s1 and this->m_s2 can be read via *buf