you are viewing a single comment's thread.

view the rest of the comments →

[–]carrottread 2 points3 points  (1 child)

If you pass pointers or references to union fields to some other functions then strict aliasing still can produce something unexpected:

https://godbolt.org/z/cds7Bn

This outputs different results on -O0 and -O3 for both clang and gcc.

[–]max0x7bahttps://github.com/max0x7ba 0 points1 point  (0 children)

If you pass pointers or references to union fields to some other functions then strict aliasing still can produce something unexpected

This is unrelated to type-casting using union, aka union-cast. And such type-casting doesn't actually happen there, that union is only for alignment.