~ [ 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 ] ~

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