1// SPDX-License-Identifier: GPL-2.0-only 2/// Find bit operations that include the same argument more than once 3//# One source of false positives is when the argument performs a side 4//# effect. Another source of false positives is when a neutral value 5//# such as 0 for | is used to indicate no information, to maintain the 6//# same structure as other similar expressions 7/// 8// Confidence: Moderate 9// Copyright: (C) 2010 Nicolas Palix, DIKU. 10// Copyright: (C) 2010 Julia Lawall, DIKU. 11// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. 12// URL: https://coccinelle.gitlabpages.inria.fr/website 13// Comments: 14// Options: --no-includes --include-headers 15 16virtual context 17virtual org 18virtual report 19 20@r expression@ 21expression E; 22position p; 23@@ 24 25( 26* E@p 27 & ... & E 28| 29* E@p 30 | ... | E 31| 32* E@p 33 & ... & !E 34| 35* E@p 36 | ... | !E 37| 38* !E@p 39 & ... & E 40| 41* !E@p 42 | ... | E 43) 44 45@script:python depends on org@ 46p << r.p; 47@@ 48 49cocci.print_main("duplicated argument to & or |",p) 50 51@script:python depends on report@ 52p << r.p; 53@@ 54 55coccilib.report.print_report(p[0],"duplicated argument to & or |") 56