https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101257
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Gregory Tucker from comment #2) > Created attachment 51165 [details] I think there are some aliasing violations here. We store to buf (which is unsigned char array) as a mixture of unsigned char and uint64_t in md5_ref BUT then do loads in the uint32_t type in md5_single. I think: uint32_t *w = (uint32_t *) data; Should need the may_alias attribute added to it.