18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci/// Check for constants that are added but are used elsewhere as bitmasks
38c2ecf20Sopenharmony_ci/// The results should be checked manually to ensure that the nonzero
48c2ecf20Sopenharmony_ci/// bits in the two constants are actually disjoint.
58c2ecf20Sopenharmony_ci///
68c2ecf20Sopenharmony_ci// Confidence: Moderate
78c2ecf20Sopenharmony_ci// Copyright: (C) 2013 Julia Lawall, INRIA/LIP6.
88c2ecf20Sopenharmony_ci// Copyright: (C) 2013 Gilles Muller, INRIA/LIP6.
98c2ecf20Sopenharmony_ci// URL: http://coccinelle.lip6.fr/
108c2ecf20Sopenharmony_ci// Comments:
118c2ecf20Sopenharmony_ci// Options: --no-includes --include-headers
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_civirtual org
148c2ecf20Sopenharmony_civirtual report
158c2ecf20Sopenharmony_civirtual context
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci@r@
188c2ecf20Sopenharmony_ciconstant c,c1;
198c2ecf20Sopenharmony_ciidentifier i,i1;
208c2ecf20Sopenharmony_ciposition p;
218c2ecf20Sopenharmony_ci@@
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci(
248c2ecf20Sopenharmony_ci c1 + c - 1
258c2ecf20Sopenharmony_ci|
268c2ecf20Sopenharmony_ci c1@i1 +@p c@i
278c2ecf20Sopenharmony_ci)
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci@s@
308c2ecf20Sopenharmony_ciconstant r.c, r.c1;
318c2ecf20Sopenharmony_ciidentifier i;
328c2ecf20Sopenharmony_ciexpression e;
338c2ecf20Sopenharmony_ci@@
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci(
368c2ecf20Sopenharmony_cie | c@i
378c2ecf20Sopenharmony_ci|
388c2ecf20Sopenharmony_cie & c@i
398c2ecf20Sopenharmony_ci|
408c2ecf20Sopenharmony_cie |= c@i
418c2ecf20Sopenharmony_ci|
428c2ecf20Sopenharmony_cie &= c@i
438c2ecf20Sopenharmony_ci|
448c2ecf20Sopenharmony_cie | c1@i
458c2ecf20Sopenharmony_ci|
468c2ecf20Sopenharmony_cie & c1@i
478c2ecf20Sopenharmony_ci|
488c2ecf20Sopenharmony_cie |= c1@i
498c2ecf20Sopenharmony_ci|
508c2ecf20Sopenharmony_cie &= c1@i
518c2ecf20Sopenharmony_ci)
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci@depends on s@
548c2ecf20Sopenharmony_ciposition r.p;
558c2ecf20Sopenharmony_ciconstant c1,c2;
568c2ecf20Sopenharmony_ci@@
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci* c1 +@p c2
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci@script:python depends on s && org@
618c2ecf20Sopenharmony_cip << r.p;
628c2ecf20Sopenharmony_ci@@
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_cicocci.print_main("sum of probable bitmasks, consider |",p)
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ci@script:python depends on s && report@
678c2ecf20Sopenharmony_cip << r.p;
688c2ecf20Sopenharmony_ci@@
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_cimsg = "WARNING: sum of probable bitmasks, consider |"
718c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0],msg)
72