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()11 foo ()
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()42 main ()
43 {
44   if (foo ())
45     if (c)
46     lab:
47       goto lab;
48   return 0;
49 }
50