/* PR rtl-optimization/104459 */ /* { dg-do compile } */ /* { dg-options "-O2 -funswitch-loops -fno-tree-dce -fcompare-debug -w" } */ void foo (int x, int y) { unsigned int a; for (;;) { short int *p = (short int *) &x; unsigned int q = 0; a /= 2; if (a) { q -= y; while (q) ; } if (x) { for (q = 0; q != 1; q += 2) { unsigned int n; n = *p ? 0 : q; y += n < 1; n = a || *p; if (n % x == 0) y /= x; } } } }