1 /* { dg-do compile { target ia32 } } */ 2 /* { dg-options "-O3 -march=x86-64" } */ 3 /* { dg-final { scan-assembler-not "cmpl\[ \t]+(\[%a-z]+), \\1" } } */ 4 5 short a; 6 int b = 1, f; 7 char c, e = 1; 8 long long d; 9 10 static short foo()11foo () 12 { 13 unsigned g, h = 0; 14 int i = 0 || d * (b | e); 15 char j = a << i, l = a; 16 short k; 17 int m = -b; 18 if (m < b) 19 { 20 k = m = b; 21 g = (k || l) / (b / e); 22 if (b) 23 __builtin_printf ("foo=%lld\n", (long long) a); 24 } 25 a = b = m; 26 if (j || e) 27 { 28 h = g; 29 i = m; 30 g = j * k / (i - d); 31 if (m) 32 b = j && b; 33 e = b * (h & d) || g; 34 } 35 b = i; 36 char n = e || h | d; 37 e = i < d & k / n; 38 return f; 39 } 40 41 int main()42main () 43 { 44 if (foo ()) 45 if (c) 46 lab: 47 goto lab; 48 return 0; 49 } 50