NoQ added inline comments.

================
Comment at: lib/StaticAnalyzer/Core/BugReporterVisitors.cpp:965
+
+    // Performing operator `&' on an lvalue expression is essentially a no-op.
+    // Then, if we are taking addresses of fields or elements, these are also
----------------
zaks.anna wrote:
> NoQ wrote:
> > alexshap wrote:
> > > "Address-of" operator can be overloaded, 
> > > just wondering - doest this code work correctly in that case ?
> > In this case we'd see a `CXXOperatorCallExpr` instead of `UnaryOperator` 
> > (all hail clang AST!).
> Adding a test case for that would be good.
Not sure. There are so many things that work differently in this scenario that 
i'm having troubles coming up with a test that tests exactly that and doesn't 
throw or not throw a warning for a dozen of other reasons. I'm even having 
troubles understanding what particular overload are we interested in. Did you 
have anything specific in mind?


================
Comment at: lib/StaticAnalyzer/Core/Store.cpp:440
   //  well, although in reality we should return the offset added to that
-  //  value.
+  //  value. See also the similar FIXME in getLValueFieldOrIvar().
   if (Base.isUnknownOrUndef() || Base.getAs<loc::ConcreteInt>())
----------------
Note that this code doesn't really trigger; we return `UnknownVal()` somewhere 
above, as shown on the newly added tests. I suspect we may be missing valid 
null dereferences because of that; will have a look.


https://reviews.llvm.org/D31982



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

Reply via email to