https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90167
Segher Boessenkool <segher at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED CC| |segher at gcc dot gnu.org Resolution|--- |INVALID --- Comment #1 from Segher Boessenkool <segher at gcc dot gnu.org> --- The code accesses d, of type double, as an int. That is not a compatible type. It does not matter how it got there, what pointer casts trickery with unions it did. You can access a union type as the type of any of its members. But a double is not a union type.