Linux Audio

Check our new training course

Loading...
Note: File does not exist in v4.17.
  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
 12virtual patch
 13virtual org
 14virtual report
 15virtual context
 16
 17@rvar depends on !patch@
 18identifier tmp;
 19expression a, b;
 20type T;
 21position 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@
 38identifier tmp;
 39expression a, b;
 40position p != rvar.p;
 41@@
 42
 43* tmp = a;
 44* a = b;@p
 45* b = tmp;
 46
 47@rpvar depends on patch@
 48identifier tmp;
 49expression a, b;
 50type 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@
 69identifier tmp;
 70expression 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@
101p << r.p;
102@@
103
104coccilib.report.print_report(p[0], "WARNING opportunity for swap()")
105
106@script:python depends on org@
107p << r.p;
108@@
109
110coccilib.org.print_todo(p[0], "WARNING opportunity for swap()")
111
112@script:python depends on report@
113p << rvar.p;
114@@
115
116coccilib.report.print_report(p[0], "WARNING opportunity for swap()")
117
118@script:python depends on org@
119p << rvar.p;
120@@
121
122coccilib.org.print_todo(p[0], "WARNING opportunity for swap()")