doublebitand.cocci 1.1 KB

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