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

Reply via email to