Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/tree-ssa/bitops-1.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
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"} } */ |