https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111097
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- > Worth noting, this code works correctly with Visual Studio and with clang. Gcc is known to be take more into account when it comes to aliasing rules of c and c++. That is exactly what you are running into really.