[PATCH] D25475: [analyzer] Add a new SVal to support pointer-to-member operations.

Devin Coughlin via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Dec 14 14:42:47 PST 2016

dcoughlin accepted this revision.
dcoughlin added a comment.
This revision is now accepted and ready to land.

Looks good to me, other than some super tiny nits! Thanks for iterating on this -- it is awesome that the analyzer will be able to model this now!!

Comment at: include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h:463
+class PointerToMember : public NonLoc {
+  friend class ento::SValBuilder;
I think this deserves a comment about why it is a NonLoc and why it needs to keep the PointerToMemberData with the list of CXXBaseSpecifiers.

Comment at: lib/StaticAnalyzer/Core/ExprEngineC.cpp:269
+    StmtNodeBuilder &Bldr, ExplodedNode* Pred) {
+  // Recover some path-sensitivty by conjuring a new value.
+  QualType resultType = CastE->getType();
While we're here we might as well correct the misspelling --> "path sensitivity".

Comment at: test/Analysis/pointer-to-member.cpp:74
-  // FIXME: Should emit a null dereference.
-  return obj.*member; // no-warning
+  return obj.*member; // expected-warning{{}}
Can you include the warning text in the expected-warning directive? This will ensure we keep emitting the correct warning in the future.


More information about the cfe-commits mailing list