1/* PR rtl-optimization/46248 */
2
3struct S
4{
5  int s;
6};
7
8void
9foo (unsigned char *x, int y, struct S *z)
10{
11  const int l1 = y;
12  const int l2 = y + l1;
13  const int l3 = y + l2;
14  const int l4 = y + l3;
15  const int l5 = y + l4;
16  const int l6 = y + l5;
17  const int l7 = y + l6;
18  int i;
19  for (i = 0; i < 8; i++)
20    {
21      int a = x[l3] - x[l4];
22      int b = x[l4] - x[l5];
23      int c = x[l5] - x[l6];
24      int d = (b >= 0 ? b : -b) - (((a >= 0 ? a : -a) + (c >= 0 ? c : -c)) >> 1);
25      if (d < z->s * 2)
26	{
27	  int v = d * (-b > 0 ? 1 : -1);
28	  x[l2] += v >> 3;
29	  x[l7] -= v >> 3;
30	}
31    }
32}
33