1/* { dg-do compile } */ 2/* { dg-require-effective-target ilp32 } */ 3/* { dg-options "-O2 -mtune=k6" } */ 4 5void 6foo (unsigned char *x, const unsigned char *y) 7{ 8 int a = 6; 9 unsigned char *b; 10 for (;;) 11 { 12 unsigned char *c = x; 13 14 while (1) 15 { 16 if (c + 2 < y) 17 c += 3; 18 else 19 break; 20 } 21 b = x + a; 22 if (*c == 4 || *c == 5) 23 { 24 unsigned char d = c[2]; 25 26 if (b[3] == 7 || b[3] == 8) 27 { 28 int e = b[3] == 8; 29 if (d < b[4] * 8 && b[5 + d / 8] & (1 << (d % 8))) 30 e = !e; 31 if (!e) 32 x[-3] = 26; 33 } 34 } 35 else if (*c == 7 && b[3] == 8) 36 { 37 int f; 38 for (f = 0; f < (int) c[1]; f++) 39 if (!(c[2 + f] == 0)) 40 break; 41 if (f == c[1]) 42 x[-3] = 26; 43 } 44 x -= 2; 45 } 46} 47