printf: Remove unused 'bprintf'
[drm/drm-misc.git] / scripts / coccinelle / misc / swap.cocci
blobc5e71b7ef7f5214f8d1eedd72309c823eb6f164e
1 // SPDX-License-Identifier: GPL-2.0-only
2 ///
3 /// Check for opencoded swap() implementation.
4 ///
5 // Confidence: High
6 // Copyright: (C) 2021 Denis Efremov ISPRAS
7 // Options: --no-includes --include-headers
8 //
9 // Keywords: swap
12 virtual patch
13 virtual org
14 virtual report
15 virtual context
17 @rvar depends on !patch@
18 identifier tmp;
19 expression a, b;
20 type T;
21 position p;
25 * T tmp;
27 * T tmp = 0;
29 * T *tmp = NULL;
31 ... when != tmp
32 * tmp = a;
33 * a = b;@p
34 * b = tmp;
35 ... when != tmp
37 @r depends on !patch@
38 identifier tmp;
39 expression a, b;
40 position p != rvar.p;
43 * tmp = a;
44 * a = b;@p
45 * b = tmp;
47 @rpvar depends on patch@
48 identifier tmp;
49 expression a, b;
50 type T;
54 - T tmp;
56 - T tmp = 0;
58 - T *tmp = NULL;
60 ... when != tmp
61 - tmp = a;
62 - a = b;
63 - b = tmp
64 + swap(a, b)
65   ;
66 ... when != tmp
68 @rp depends on patch@
69 identifier tmp;
70 expression a, b;
73 - tmp = a;
74 - a = b;
75 - b = tmp
76 + swap(a, b)
77   ;
79 @depends on patch && (rpvar || rp)@
83   for (...;...;...)
84 - {
85         swap(...);
86 - }
88   while (...)
89 - {
90         swap(...);
91 - }
93   if (...)
94 - {
95         swap(...);
96 - }
100 @script:python depends on report@
101 p << r.p;
104 coccilib.report.print_report(p[0], "WARNING opportunity for swap()")
106 @script:python depends on org@
107 p << r.p;
110 coccilib.org.print_todo(p[0], "WARNING opportunity for swap()")
112 @script:python depends on report@
113 p << rvar.p;
116 coccilib.report.print_report(p[0], "WARNING opportunity for swap()")
118 @script:python depends on org@
119 p << rvar.p;
122 coccilib.org.print_todo(p[0], "WARNING opportunity for swap()")