https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96167
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Severity|normal |enhancement Last reconfirmed| |2020-07-15 Ever confirmed|0 |1 --- Comment #2 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- store-merging certainly has the infrastructure and does it job until: /* A complete byte swap should make the symbolic number to start with the largest digit in the highest order byte. Unchanged symbolic number indicates a read with same endianness as target architecture. */ if (n.n != cmpnop && n.n != cmpxchg) return false; where it of course realizes that this is not a proper 64-bit bswap.