doublebitand.cocci 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /// Find bit operations that include the same argument more than once
  3. //# One source of false positives is when the argument performs a side
  4. //# effect. Another source of false positives is when a neutral value
  5. //# such as 0 for | is used to indicate no information, to maintain the
  6. //# same structure as other similar expressions
  7. ///
  8. // Confidence: Moderate
  9. // Copyright: (C) 2010 Nicolas Palix, DIKU.
  10. // Copyright: (C) 2010 Julia Lawall, DIKU.
  11. // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6.
  12. // URL: https://coccinelle.gitlabpages.inria.fr/website
  13. // Comments:
  14. // Options: --no-includes --include-headers
  15. virtual context
  16. virtual org
  17. virtual report
  18. @r expression@
  19. expression E;
  20. position p;
  21. @@
  22. (
  23. * E@p
  24. & ... & E
  25. |
  26. * E@p
  27. | ... | E
  28. |
  29. * E@p
  30. & ... & !E
  31. |
  32. * E@p
  33. | ... | !E
  34. |
  35. * !E@p
  36. & ... & E
  37. |
  38. * !E@p
  39. | ... | E
  40. )
  41. @script:python depends on org@
  42. p << r.p;
  43. @@
  44. cocci.print_main("duplicated argument to & or |",p)
  45. @script:python depends on report@
  46. p << r.p;
  47. @@
  48. coccilib.report.print_report(p[0],"duplicated argument to & or |")