modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/pr46248.c (about) 1 /* PR rtl-optimization/46248 */ 2 3 struct S 4 { 5 int s; 6 }; 7 8 void 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 }