[Bug tree-optimization/96167] fails to detect ROL pattern in simple case, but succeeds when operand goes through memcpy
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Jul 15 14:04:05 GMT 2020
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;
}
More information about the Gcc-bugs
mailing list