123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- // SPDX-License-Identifier: GPL-2.0-only
- ///
- /// Check for opencoded swap() implementation.
- ///
- // Confidence: High
- // Copyright: (C) 2021 Denis Efremov ISPRAS
- // Options: --no-includes --include-headers
- //
- // Keywords: swap
- //
- virtual patch
- virtual org
- virtual report
- virtual context
- @rvar depends on !patch@
- identifier tmp;
- expression a, b;
- type T;
- position p;
- @@
- (
- * T tmp;
- |
- * T tmp = 0;
- |
- * T *tmp = NULL;
- )
- ... when != tmp
- * tmp = a;
- * a = b;@p
- * b = tmp;
- ... when != tmp
- @r depends on !patch@
- identifier tmp;
- expression a, b;
- position p != rvar.p;
- @@
- * tmp = a;
- * a = b;@p
- * b = tmp;
- @rpvar depends on patch@
- identifier tmp;
- expression a, b;
- type T;
- @@
- (
- - T tmp;
- |
- - T tmp = 0;
- |
- - T *tmp = NULL;
- )
- ... when != tmp
- - tmp = a;
- - a = b;
- - b = tmp
- + swap(a, b)
- ;
- ... when != tmp
- @rp depends on patch@
- identifier tmp;
- expression a, b;
- @@
- - tmp = a;
- - a = b;
- - b = tmp
- + swap(a, b)
- ;
- @depends on patch && (rpvar || rp)@
- @@
- (
- for (...;...;...)
- - {
- swap(...);
- - }
- |
- while (...)
- - {
- swap(...);
- - }
- |
- if (...)
- - {
- swap(...);
- - }
- )
- @script:python depends on report@
- p << r.p;
- @@
- coccilib.report.print_report(p[0], "WARNING opportunity for swap()")
- @script:python depends on org@
- p << r.p;
- @@
- coccilib.org.print_todo(p[0], "WARNING opportunity for swap()")
- @script:python depends on report@
- p << rvar.p;
- @@
- coccilib.report.print_report(p[0], "WARNING opportunity for swap()")
- @script:python depends on org@
- p << rvar.p;
- @@
- coccilib.org.print_todo(p[0], "WARNING opportunity for swap()")
|