~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/coccinelle/misc/swap.cocci

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /scripts/coccinelle/misc/swap.cocci (Version linux-6.12-rc7) and /scripts/coccinelle/misc/swap.cocci (Version linux-6.6.60)


  1 // SPDX-License-Identifier: GPL-2.0-only            1 // SPDX-License-Identifier: GPL-2.0-only
  2 ///                                                 2 ///
  3 /// Check for opencoded swap() implementation.      3 /// Check for opencoded swap() implementation.
  4 ///                                                 4 ///
  5 // Confidence: High                                 5 // Confidence: High
  6 // Copyright: (C) 2021 Denis Efremov ISPRAS         6 // Copyright: (C) 2021 Denis Efremov ISPRAS
  7 // Options: --no-includes --include-headers         7 // Options: --no-includes --include-headers
  8 //                                                  8 //
  9 // Keywords: swap                                   9 // Keywords: swap
 10 //                                                 10 //
 11                                                    11 
 12 virtual patch                                      12 virtual patch
 13 virtual org                                        13 virtual org
 14 virtual report                                     14 virtual report
 15 virtual context                                    15 virtual context
 16                                                    16 
 17 @rvar depends on !patch@                           17 @rvar depends on !patch@
 18 identifier tmp;                                    18 identifier tmp;
 19 expression a, b;                                   19 expression a, b;
 20 type T;                                            20 type T;
 21 position p;                                        21 position p;
 22 @@                                                 22 @@
 23                                                    23 
 24 (                                                  24 (
 25 * T tmp;                                           25 * T tmp;
 26 |                                                  26 |
 27 * T tmp = 0;                                       27 * T tmp = 0;
 28 |                                                  28 |
 29 * T *tmp = NULL;                                   29 * T *tmp = NULL;
 30 )                                                  30 )
 31 ... when != tmp                                    31 ... when != tmp
 32 * tmp = a;                                         32 * tmp = a;
 33 * a = b;@p                                         33 * a = b;@p
 34 * b = tmp;                                         34 * b = tmp;
 35 ... when != tmp                                    35 ... when != tmp
 36                                                    36 
 37 @r depends on !patch@                              37 @r depends on !patch@
 38 identifier tmp;                                    38 identifier tmp;
 39 expression a, b;                                   39 expression a, b;
 40 position p != rvar.p;                              40 position p != rvar.p;
 41 @@                                                 41 @@
 42                                                    42 
 43 * tmp = a;                                         43 * tmp = a;
 44 * a = b;@p                                         44 * a = b;@p
 45 * b = tmp;                                         45 * b = tmp;
 46                                                    46 
 47 @rpvar depends on patch@                           47 @rpvar depends on patch@
 48 identifier tmp;                                    48 identifier tmp;
 49 expression a, b;                                   49 expression a, b;
 50 type T;                                            50 type T;
 51 @@                                                 51 @@
 52                                                    52 
 53 (                                                  53 (
 54 - T tmp;                                           54 - T tmp;
 55 |                                                  55 |
 56 - T tmp = 0;                                       56 - T tmp = 0;
 57 |                                                  57 |
 58 - T *tmp = NULL;                                   58 - T *tmp = NULL;
 59 )                                                  59 )
 60 ... when != tmp                                    60 ... when != tmp
 61 - tmp = a;                                         61 - tmp = a;
 62 - a = b;                                           62 - a = b;
 63 - b = tmp                                          63 - b = tmp
 64 + swap(a, b)                                       64 + swap(a, b)
 65   ;                                                65   ;
 66 ... when != tmp                                    66 ... when != tmp
 67                                                    67 
 68 @rp depends on patch@                              68 @rp depends on patch@
 69 identifier tmp;                                    69 identifier tmp;
 70 expression a, b;                                   70 expression a, b;
 71 @@                                                 71 @@
 72                                                    72 
 73 - tmp = a;                                         73 - tmp = a;
 74 - a = b;                                           74 - a = b;
 75 - b = tmp                                          75 - b = tmp
 76 + swap(a, b)                                       76 + swap(a, b)
 77   ;                                                77   ;
 78                                                    78 
 79 @depends on patch && (rpvar || rp)@                79 @depends on patch && (rpvar || rp)@
 80 @@                                                 80 @@
 81                                                    81 
 82 (                                                  82 (
 83   for (...;...;...)                                83   for (...;...;...)
 84 - {                                                84 - {
 85         swap(...);                                 85         swap(...);
 86 - }                                                86 - }
 87 |                                                  87 |
 88   while (...)                                      88   while (...)
 89 - {                                                89 - {
 90         swap(...);                                 90         swap(...);
 91 - }                                                91 - }
 92 |                                                  92 |
 93   if (...)                                         93   if (...)
 94 - {                                                94 - {
 95         swap(...);                                 95         swap(...);
 96 - }                                                96 - }
 97 )                                                  97 )
 98                                                    98 
 99                                                    99 
100 @script:python depends on report@                 100 @script:python depends on report@
101 p << r.p;                                         101 p << r.p;
102 @@                                                102 @@
103                                                   103 
104 coccilib.report.print_report(p[0], "WARNING op    104 coccilib.report.print_report(p[0], "WARNING opportunity for swap()")
105                                                   105 
106 @script:python depends on org@                    106 @script:python depends on org@
107 p << r.p;                                         107 p << r.p;
108 @@                                                108 @@
109                                                   109 
110 coccilib.org.print_todo(p[0], "WARNING opportu    110 coccilib.org.print_todo(p[0], "WARNING opportunity for swap()")
111                                                   111 
112 @script:python depends on report@                 112 @script:python depends on report@
113 p << rvar.p;                                      113 p << rvar.p;
114 @@                                                114 @@
115                                                   115 
116 coccilib.report.print_report(p[0], "WARNING op    116 coccilib.report.print_report(p[0], "WARNING opportunity for swap()")
117                                                   117 
118 @script:python depends on org@                    118 @script:python depends on org@
119 p << rvar.p;                                      119 p << rvar.p;
120 @@                                                120 @@
121                                                   121 
122 coccilib.org.print_todo(p[0], "WARNING opportu    122 coccilib.org.print_todo(p[0], "WARNING opportunity for swap()")
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php