https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66917
--- Comment #8 from ktkachov at gcc dot gnu.org --- The 007t.lower one looks like: try { MEM[(char * {ref-all})&a] = MEM[(char * {ref-all})ap]; MEM[(char * {ref-all})&b] = MEM[(char * {ref-all})bp]; D.5587 = a.u[0]; D.5588 = b.u[0]; D.5589 = D.5587 ^ D.5588; a.u[0] = D.5589; D.5590 = a.u[1]; D.5591 = b.u[1]; D.5592 = D.5590 ^ D.5591; a.u[1] = D.5592; MEM[(char * {ref-all})outp] = MEM[(char * {ref-all})&a]; } finally { a = {CLOBBER}; b = {CLOBBER}; } return;