https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116885
--- Comment #15 from Jaroslav Fojtík <JaFojtik at seznam dot cz> --- When I have finished university where I has been learned C/C++ in 2000 there was no problem to typecast uint64_t* to double* or any other type I need. We were learned that this is correct ;). Now I see that *(double*)&variable is practically illegal. But as you claim when I memcpy 8 bytes from double* to uint64_t* it is still legal.