[PATCH] D19311: Self Assignment Checker

Balogh, Ádám via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 20 01:15:06 PDT 2016


baloghadamsoftware created this revision.
baloghadamsoftware added a reviewer: dcoughlin.
baloghadamsoftware added subscribers: cfe-commits, xazax.hun, o.gyorgy.

This checker checks copy and move assignment operators whether they are protected against self-assignment. Since C++ core guidelines discourages explicit checking for ``&rhs==this`` in general we take a different approach: in top-frame analysis we branch the exploded graph for two cases, where &rhs==this and &rhs!=this and let existing checkers (e.g. unix.Malloc) do the rest of the work. It is important that we check all copy and move assignment operator in top frame even if we checked them already since self-assignments may happen undetected even in the same translation unit (e.g. using random indices for an array what may or may not be the same).

http://reviews.llvm.org/D19311

Files:
  lib/StaticAnalyzer/Checkers/CMakeLists.txt
  lib/StaticAnalyzer/Checkers/Checkers.td
  lib/StaticAnalyzer/Checkers/SelfAssignmentChecker.cpp
  lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
  test/Analysis/self-assign-unused.cpp
  test/Analysis/self-assign-used.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D19311.54324.patch
Type: text/x-patch
Size: 5697 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160420/951d79bf/attachment.bin>


More information about the cfe-commits mailing list