1 /* PR rtl-optimization/46248 */
2 
3 struct S
4 {
5   int s;
6 };
7 
8 void
foo(unsigned char * x,int y,struct S * z)9 foo (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