]>
Commit | Line | Data |
---|---|---|
24f0c2d6 JL |
1 | /// Check for constants that are added but are used elsewhere as bitmasks |
2 | /// The results should be checked manually to ensure that the nonzero | |
3 | /// bits in the two constants are actually disjoint. | |
4 | /// | |
5 | // Confidence: Moderate | |
6 | // Copyright: (C) 2013 Julia Lawall, INRIA/LIP6. GPLv2. | |
7 | // Copyright: (C) 2013 Gilles Muller, INRIA/LIP6. GPLv2. | |
8 | // URL: http://coccinelle.lip6.fr/ | |
9 | // Comments: | |
93f14468 | 10 | // Options: --no-includes --include-headers |
24f0c2d6 JL |
11 | |
12 | virtual org | |
13 | virtual report | |
14 | virtual context | |
15 | ||
16 | @r@ | |
17 | constant c; | |
18 | identifier i; | |
19 | expression e; | |
20 | @@ | |
21 | ||
22 | ( | |
23 | e | c@i | |
24 | | | |
25 | e & c@i | |
26 | | | |
27 | e |= c@i | |
28 | | | |
29 | e &= c@i | |
30 | ) | |
31 | ||
32 | @s@ | |
33 | constant r.c,c1; | |
34 | identifier i1; | |
35 | position p; | |
36 | @@ | |
37 | ||
38 | ( | |
39 | c1 + c - 1 | |
40 | | | |
41 | *c1@i1 +@p c | |
42 | ) | |
43 | ||
44 | @script:python depends on org@ | |
45 | p << s.p; | |
46 | @@ | |
47 | ||
48 | cocci.print_main("sum of probable bitmasks, consider |",p) | |
49 | ||
50 | @script:python depends on report@ | |
51 | p << s.p; | |
52 | @@ | |
53 | ||
54 | msg = "WARNING: sum of probable bitmasks, consider |" | |
55 | coccilib.report.print_report(p[0],msg) |