/* { dg-do compile { target ia32 } } */ /* { dg-options "-O3 -march=x86-64" } */ /* { dg-final { scan-assembler-not "cmpl\[ \t]+(\[%a-z]+), \\1" } } */ short a; int b = 1, f; char c, e = 1; long long d; static short foo () { unsigned g, h = 0; int i = 0 || d * (b | e); char j = a << i, l = a; short k; int m = -b; if (m < b) { k = m = b; g = (k || l) / (b / e); if (b) __builtin_printf ("foo=%lld\n", (long long) a); } a = b = m; if (j || e) { h = g; i = m; g = j * k / (i - d); if (m) b = j && b; e = b * (h & d) || g; } b = i; char n = e || h | d; e = i < d & k / n; return f; } int main () { if (foo ()) if (c) lab: goto lab; return 0; }