Mattias Engdegård <mattias@xxxxxxxxxxxx> writes: | Using a union intermediate instead, | | union { double d; uint64_t x; } u; | u.d = something; | uint64_t x = u.x; | | works as expected, but I would like to know why - if it is a matter of luck | with the current implementation it might cease working when the compiler | changes or becomes more aggressive in the future. that union trick is invalid as well, from the standard point of view. However, GCC makes a guarantee that it will be supported.