131
|
1 /* { dg-do run } */
|
|
2 /* { dg-options "-O -fdump-tree-optimized-raw" } */
|
|
3
|
|
4 #define DECLS(n,VOL) \
|
|
5 __attribute__((noinline,noclone)) \
|
|
6 int f##n(int A,int B){ \
|
|
7 VOL int C = A & ~B; \
|
|
8 VOL int D = A ^ B; \
|
|
9 return C | D; \
|
|
10 } \
|
|
11 __attribute__((noinline,noclone)) \
|
|
12 int g##n(int A,int B){ \
|
|
13 VOL int C = A & ~B; \
|
|
14 return C ^ ~A; \
|
|
15 } \
|
|
16 __attribute__((noinline,noclone)) \
|
|
17 int h##n(int A,int B){ \
|
|
18 VOL int C = A | B; \
|
|
19 VOL int D = A ^ B; \
|
|
20 return C & ~D; \
|
|
21 } \
|
|
22 __attribute__((noinline,noclone)) \
|
|
23 int i##n(int A,int B){ \
|
|
24 VOL int C = A ^ B; \
|
|
25 return A | ~C; \
|
|
26 } \
|
|
27 __attribute__((noinline,noclone)) \
|
|
28 int J##n(int A,int B){ \
|
|
29 VOL int C = A | B; \
|
|
30 VOL int D = A & B; \
|
|
31 return C | D; \
|
|
32 } \
|
|
33 __attribute__((noinline,noclone)) \
|
|
34 int k##n(int A,int B){ \
|
|
35 VOL int C = A & B; \
|
|
36 VOL int D = A ^ B; \
|
|
37 return C | ~D; \
|
|
38 } \
|
|
39 __attribute__((noinline,noclone)) \
|
|
40 int l##n(int A,int B){ \
|
|
41 VOL int C = A & ~B; \
|
|
42 return ~C; \
|
|
43 } \
|
|
44 __attribute__((noinline,noclone)) \
|
|
45 int m##n(int A,int B){ \
|
|
46 VOL int C = A & B; \
|
|
47 VOL int D = A ^ B; \
|
|
48 return C ^ D; \
|
|
49 }
|
|
50
|
|
51 DECLS(0,)
|
|
52 DECLS(1,volatile)
|
|
53
|
|
54 int main(){
|
|
55 for(int A = 0; A <= 1; ++A)
|
|
56 for(int B = 0; B <= 1; ++B)
|
|
57 {
|
|
58 if (f0 (A, B) != f1 (A, B)) __builtin_abort();
|
|
59 if (g0 (A, B) != g1 (A, B)) __builtin_abort();
|
|
60 if (h0 (A, B) != h1 (A, B)) __builtin_abort();
|
|
61 if (i0 (A, B) != i1 (A, B)) __builtin_abort();
|
|
62 if (J0 (A, B) != J1 (A, B)) __builtin_abort();
|
|
63 if (k0 (A, B) != k1 (A, B)) __builtin_abort();
|
|
64 if (l0 (A, B) != l1 (A, B)) __builtin_abort();
|
|
65 if (m0 (A, B) != m1 (A, B)) __builtin_abort();
|
|
66 }
|
|
67 }
|
|
68
|
|
69 /* { dg-final { scan-tree-dump-times "bit_not_expr" 12 "optimized"} } */
|
|
70 /* { dg-final { scan-tree-dump-times "bit_and_expr" 9 "optimized"} } */
|
|
71 /* { dg-final { scan-tree-dump-times "bit_ior_expr" 10 "optimized"} } */
|
|
72 /* { dg-final { scan-tree-dump-times "bit_xor_expr" 9 "optimized"} } */
|