Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / scripts / coccinelle / misc / orplus.cocci
1 // SPDX-License-Identifier: GPL-2.0-only
2 /// Check for constants that are added but are used elsewhere as bitmasks
3 /// The results should be checked manually to ensure that the nonzero
4 /// bits in the two constants are actually disjoint.
5 ///
6 // Confidence: Moderate
7 // Copyright: (C) 2013 Julia Lawall, INRIA/LIP6.
8 // Copyright: (C) 2013 Gilles Muller, INRIA/LIP6.
9 // URL: http://coccinelle.lip6.fr/
10 // Comments:
11 // Options: --no-includes --include-headers
12
13 virtual org
14 virtual report
15 virtual context
16
17 @r@
18 constant c,c1;
19 identifier i,i1;
20 position p;
21 @@
22
23 (
24  c1 + c - 1
25 |
26  c1@i1 +@p c@i
27 )
28
29 @s@
30 constant r.c, r.c1;
31 identifier i;
32 expression e;
33 @@
34
35 (
36 e | c@i
37 |
38 e & c@i
39 |
40 e |= c@i
41 |
42 e &= c@i
43 |
44 e | c1@i
45 |
46 e & c1@i
47 |
48 e |= c1@i
49 |
50 e &= c1@i
51 )
52
53 @depends on s@
54 position r.p;
55 constant c1,c2;
56 @@
57
58 * c1 +@p c2
59
60 @script:python depends on s && org@
61 p << r.p;
62 @@
63
64 cocci.print_main("sum of probable bitmasks, consider |",p)
65
66 @script:python depends on s && report@
67 p << r.p;
68 @@
69
70 msg = "WARNING: sum of probable bitmasks, consider |"
71 coccilib.report.print_report(p[0],msg)