dcoughlin added a comment.

Other than adding expected notes for the path notes to the test, this looks 
good to me. Thanks Ádám!


================
Comment at: lib/StaticAnalyzer/Core/BugReporterVisitors.cpp:1698
@@ +1697,3 @@
+PathDiagnosticPiece *
+CXXSelfAssignmentBRVisitor::VisitNode(const ExplodedNode *Succ,
+                                      const ExplodedNode *Pred,
----------------
This is great.

================
Comment at: lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp:452
@@ -444,5 +451,3 @@
   // inlining when reanalyzing an already inlined function.
-  if (Visited.count(D)) {
-    assert(isa<ObjCMethodDecl>(D) &&
-           "We are only reanalyzing ObjCMethods.");
+  if (Visited.count(D) && isa<ObjCMethodDecl>(D)) {
     const ObjCMethodDecl *ObjCM = cast<ObjCMethodDecl>(D);
----------------
baloghadamsoftware wrote:
> I made a quick measurement on our build server using clang as target code. 
> Real/user/system times were 75/575/18 for minimal and 76/587/18 for regular. 
> This does not seem too much. However, since the semantics of a copy 
> assignment operator is often composed of the semantics of a destructor and 
> the semantics of a copy constructor implementations often put these two 
> functionalities into separate functions and call them from the destructor, 
> copy constructor and copy assignment operator. Such implementations requires 
> regular inlining to be checked.
Ok, makes sense to me.

================
Comment at: test/Analysis/self-assign.cpp:1
@@ +1,2 @@
+// RUN: %clang_cc1 -std=c++11 -analyze 
-analyzer-checker=core,cplusplus,unix.Malloc,debug.ExprInspection %s -verify
+
----------------
I think it would be good to add -analyzer-output=text to this test line and 
check the expected output of that path notes.


https://reviews.llvm.org/D19311



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to