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