This does technically require that a union of those structs exists, even though it is not used. I don't know of any compiler for which this actually makes a difference though.
I checked and we actually have a give union for everything. I didn't mention it because I accidentally got rid of it when simplifying my question (the original is full of macros).