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