1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-optimized" } */
3 /* { dg-final { scan-tree-dump-not "x_\[0-9]+\\\(D\\\) & y_\[0-9]+\\\(D\\\);" "optimized" } } */
4 /* { dg-final { scan-tree-dump-not "x_\[0-9]+\\\(D\\\) \\| y_\[0-9]+\\\(D\\\);" "optimized" } } */
5 /* { dg-final { scan-tree-dump-times "x_\[0-9]+\\\(D\\\) \\^ y_\[0-9]+\\\(D\\\);" 4 "optimized" } } */
6 /* { dg-final { scan-tree-dump-times "~_\[0-9]\+" 4 "optimized" } } */
7 
8 int
a(int x,int y)9 a (int x, int y)
10 {
11   int t = x & y;
12   int tt = x | y;
13   t = t - tt;
14   return t + -1;
15 }
16 
17 int
b(int x,int y)18 b (int x, int y)
19 {
20   int t = x & y;
21   int tt = x | y;
22   t = t - 1;
23   return t - tt;
24 }
25 
26 int
c(int x,int y)27 c (int x, int y)
28 {
29   int t = x & y;
30   int tt = x | y;
31   tt = tt + 1;
32   return t - tt;
33 }
34 
35 int
d(int x,int y)36 d (int x, int y)
37 {
38   int t = x & y;
39   int tt = x | y;
40   tt = tt + 1;
41   return t - tt;
42 }
43