xazax.hun added inline comments.

================
Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:139
+
+  const auto *MethodDecl = dyn_cast_or_null<CXXMethodDecl>(OC->getDecl());
+
----------------
You should never get null here due to `isStdSmartPointerClass` guarding above. 
I think the null check could be transformed into an assert.


================
Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:141
+
+  if (!MethodDecl || !MethodDecl->isOverloadedOperator())
+    return;
----------------
You have a `CXXMemberOperatorCall` which already represents an overloaded 
operator. This check is either redundant or could be an assert instead.


================
Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:144
+
+  OverloadedOperatorKind OOK = MethodDecl->getOverloadedOperator();
+  if (OOK == OO_Star || OOK == OO_Arrow) {
----------------
In case `CXXMemberOperatorCall ` class does not have a way to query the 
overloaded operator kind maybe it would be worth to add a helper method to that 
class. So you can do most of the checking using one interface only.


================
Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:198
+                            *InnerPointVal);
+    C.addTransition(State);
+  }
----------------
It is possible that both `updateTrackedRegion` and this adds a transition. Both 
transition will have the same predecessor, i.e. you introduce a split in the 
exploded graph. Is this intended?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D81315/new/

https://reviews.llvm.org/D81315



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

Reply via email to