xref: /openbmc/linux/scripts/coccinelle/misc/orplus.cocci (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
17f904d7eSThomas Gleixner// SPDX-License-Identifier: GPL-2.0-only
224f0c2d6SJulia Lawall/// Check for constants that are added but are used elsewhere as bitmasks
324f0c2d6SJulia Lawall/// The results should be checked manually to ensure that the nonzero
424f0c2d6SJulia Lawall/// bits in the two constants are actually disjoint.
524f0c2d6SJulia Lawall///
624f0c2d6SJulia Lawall// Confidence: Moderate
77f904d7eSThomas Gleixner// Copyright: (C) 2013 Julia Lawall, INRIA/LIP6.
87f904d7eSThomas Gleixner// Copyright: (C) 2013 Gilles Muller, INRIA/LIP6.
9*f01701ceSJulia Lawall// URL: https://coccinelle.gitlabpages.inria.fr/website
1024f0c2d6SJulia Lawall// Comments:
1193f14468SNicolas Palix// Options: --no-includes --include-headers
1224f0c2d6SJulia Lawall
1324f0c2d6SJulia Lawallvirtual org
1424f0c2d6SJulia Lawallvirtual report
1524f0c2d6SJulia Lawallvirtual context
1624f0c2d6SJulia Lawall
1724f0c2d6SJulia Lawall@r@
18937c812dSJulia Lawallconstant c,c1;
19937c812dSJulia Lawallidentifier i,i1;
20937c812dSJulia Lawallposition p;
21937c812dSJulia Lawall@@
22937c812dSJulia Lawall
23937c812dSJulia Lawall(
24937c812dSJulia Lawall c1 + c - 1
25937c812dSJulia Lawall|
26937c812dSJulia Lawall c1@i1 +@p c@i
27937c812dSJulia Lawall)
28937c812dSJulia Lawall
29937c812dSJulia Lawall@s@
30937c812dSJulia Lawallconstant r.c, r.c1;
3124f0c2d6SJulia Lawallidentifier i;
3224f0c2d6SJulia Lawallexpression e;
3324f0c2d6SJulia Lawall@@
3424f0c2d6SJulia Lawall
3524f0c2d6SJulia Lawall(
3624f0c2d6SJulia Lawalle | c@i
3724f0c2d6SJulia Lawall|
3824f0c2d6SJulia Lawalle & c@i
3924f0c2d6SJulia Lawall|
4024f0c2d6SJulia Lawalle |= c@i
4124f0c2d6SJulia Lawall|
4224f0c2d6SJulia Lawalle &= c@i
43937c812dSJulia Lawall|
44937c812dSJulia Lawalle | c1@i
45937c812dSJulia Lawall|
46937c812dSJulia Lawalle & c1@i
47937c812dSJulia Lawall|
48937c812dSJulia Lawalle |= c1@i
49937c812dSJulia Lawall|
50937c812dSJulia Lawalle &= c1@i
5124f0c2d6SJulia Lawall)
5224f0c2d6SJulia Lawall
53937c812dSJulia Lawall@depends on s@
54937c812dSJulia Lawallposition r.p;
55937c812dSJulia Lawallconstant c1,c2;
5624f0c2d6SJulia Lawall@@
5724f0c2d6SJulia Lawall
58937c812dSJulia Lawall* c1 +@p c2
5924f0c2d6SJulia Lawall
60937c812dSJulia Lawall@script:python depends on s && org@
61937c812dSJulia Lawallp << r.p;
6224f0c2d6SJulia Lawall@@
6324f0c2d6SJulia Lawall
6424f0c2d6SJulia Lawallcocci.print_main("sum of probable bitmasks, consider |",p)
6524f0c2d6SJulia Lawall
66937c812dSJulia Lawall@script:python depends on s && report@
67937c812dSJulia Lawallp << r.p;
6824f0c2d6SJulia Lawall@@
6924f0c2d6SJulia Lawall
7024f0c2d6SJulia Lawallmsg = "WARNING: sum of probable bitmasks, consider |"
7124f0c2d6SJulia Lawallcoccilib.report.print_report(p[0],msg)
72