https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92071
--- Comment #2 from David Binderman <dcb314 at hotmail dot com> --- Here is some reduced C code which demonstrates the problem: a; union b { double c; char d[8] } e() { union b b; memcpy(b.d, a, 8); f(b); } Flag -O2 required.