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 13virtual org 14virtual report 15virtual context 16 17@r@ 18constant c,c1; 19identifier i,i1; 20position p; 21@@ 22 23( 24 c1 + c - 1 25| 26 c1@i1 +@p c@i 27) 28 29@s@ 30constant r.c, r.c1; 31identifier i; 32expression e; 33@@ 34 35( 36e | c@i 37| 38e & c@i 39| 40e |= c@i 41| 42e &= c@i 43| 44e | c1@i 45| 46e & c1@i 47| 48e |= c1@i 49| 50e &= c1@i 51) 52 53@depends on s@ 54position r.p; 55constant c1,c2; 56@@ 57 58* c1 +@p c2 59 60@script:python depends on s && org@ 61p << r.p; 62@@ 63 64cocci.print_main("sum of probable bitmasks, consider |",p) 65 66@script:python depends on s && report@ 67p << r.p; 68@@ 69 70msg = "WARNING: sum of probable bitmasks, consider |" 71coccilib.report.print_report(p[0],msg) 72