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