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)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