| /* { 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; |
| } |