/* { dg-do compile } */ /* { dg-require-effective-target ia32 } */ /* { dg-options "-O2 -mtune=k6" } */ void foo (unsigned char *x, const unsigned char *y) { int a = 6; unsigned char *b; for (;;) { unsigned char *c = x; while (1) { if (c + 2 < y) c += 3; else break; } b = x + a; if (*c == 4 || *c == 5) { unsigned char d = c[2]; if (b[3] == 7 || b[3] == 8) { int e = b[3] == 8; if (d < b[4] * 8 && b[5 + d / 8] & (1 << (d % 8))) e = !e; if (!e) x[-3] = 26; } } else if (*c == 7 && b[3] == 8) { int f; for (f = 0; f < (int) c[1]; f++) if (!(c[2 + f] == 0)) break; if (f == c[1]) x[-3] = 26; } x -= 2; } }