/* PR tree-optimization/66949 */ /* { dg-do compile } */ int a, *b = &a, c; unsigned short fn1 (unsigned short p1, unsigned int p2) { return p2 > 1 || p1 >> p2 ? p1 : p1 << p2; } void fn2 () { int *d = &a; for (a = 0; a < -1; a = 1) ; if (a < 0) c = 0; *b = fn1 (*d || c, *d); } int main () { fn2 (); return 0; }