https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90668
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- If the size of int and void* are the same, I would say there is an issue. Otherwise there is undefined behavior going on. The reason for the difference in sizes matter is because you write via void* and then read the second half via int.