https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96167
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Like: unsigned long long foo (unsigned long long x) { union U { unsigned long long x; char y[8]; } u, v; u.x = x; v.y[0] = u.y[7]; v.y[1] = u.y[0]; v.y[2] = u.y[1]; v.y[3] = u.y[2]; v.y[4] = u.y[3]; v.y[5] = u.y[4]; v.y[6] = u.y[5]; v.y[7] = u.y[6]; return v.x; } unsigned long long bar (unsigned long long x) { union U { unsigned long long x; char y[8]; } u; u.x = x; char t = u.y[7]; u.y[7] = u.y[6]; u.y[6] = u.y[5]; u.y[5] = u.y[4]; u.y[4] = u.y[3]; u.y[3] = u.y[2]; u.y[2] = u.y[1]; u.y[1] = u.y[0]; u.y[0] = t; return u.x; }