https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122793
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Slightly further simplified, -O2 -msse4 fails, -O2 works:
static void
foo (unsigned char *d, unsigned char *s, int e, int f)
{
for (int i = 0; i < 4; i++)
{
d[0] = s[-2];
d[5] = (s[5] + s[6]) * 2 - (s[4] + s[7]) + s[3] + s[8];
d[6] = (s[6] + s[7]) * 2 - (s[5] + s[8]) + s[4] + s[9];
d[7] = (s[7] + s[8]) * 2 - (s[6] + s[9]) + s[5] + s[10];
d += e;
s += f;
}
}
unsigned char s[128] = { 2 }, d[128];
int
main ()
{
foo (d, s + 2, 16, 16);
if (d[5] != 0)
__builtin_abort ();
}