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;
}