Merge tag 'v3.3.7' into 3.3/master
[zen-stable.git] / scripts / coccinelle / tests / doublebitand.cocci
blob9ba73d05a77eec771d706b2656cebab30530167f
1 /// Find bit operations that include the same argument more than once
2 //# One source of false positives is when the argument performs a side
3 //# effect.  Another source of false positives is when a neutral value
4 //# such as 0 for | is used to indicate no information, to maintain the
5 //# same structure as other similar expressions
6 ///
7 // Confidence: Moderate
8 // Copyright: (C) 2010 Nicolas Palix, DIKU.  GPLv2.
9 // Copyright: (C) 2010 Julia Lawall, DIKU.  GPLv2.
10 // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6.  GPLv2.
11 // URL: http://coccinelle.lip6.fr/
12 // Comments:
13 // Options: -no_includes -include_headers
15 virtual context
16 virtual org
17 virtual report
19 @r expression@
20 expression E;
21 position p;
25 *        E@p
26          & ... & E
28 *        E@p
29          | ... | E
31 *        E@p
32          & ... & !E
34 *        E@p
35          | ... | !E
37 *        !E@p
38          & ... & E
40 *        !E@p
41          | ... | E
44 @script:python depends on org@
45 p << r.p;
48 cocci.print_main("duplicated argument to & or |",p)
50 @script:python depends on report@
51 p << r.p;
54 coccilib.report.print_report(p[0],"duplicated argument to & or |")