/* PR tree-optimization/77454 */ /* { dg-do compile } */ /* { dg-options "-O2" } */ void foo (unsigned char x, char y) { while (x != 0) { unsigned char *a = &x; int b; if (y != 0) a = (unsigned char *) &y; else if (y + 1 != 0) a = (unsigned char *) &y; for (x = 0; x < 1; ++x) b = 0; for (y = 0; y < 3; ++y) { y = !!y; if (y != 0) x = y; } if ((b != 0 ? -1 : *a) < (y = b)) b = 1; } }