NoQ added inline comments.

================
Comment at: 
lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp:187-191
   // If FR is a pointer pointing to a non-primitive type.
   if (Optional<nonloc::LazyCompoundVal> RecordV =
           DerefdV.getAs<nonloc::LazyCompoundVal>()) {
 
     const TypedValueRegion *R = RecordV->getRegion();
----------------
This looks like one more situation where we dereference a location to get a 
value and then struggle to get back to the location that we've dereferenced by 
looking at the value. Can we just use `V`?


================
Comment at: test/Analysis/cxx-uninitialized-object-inheritance.cpp:787
   // TODO: we'd expect the note: {{uninitialized field 'this->x'}}
   int x; // no-note
 };
----------------
Szelethus wrote:
> The checker should be able to catch this one -- for some reason it is 
> regarded as an unknown region. Odd, as the test case right after this one 
> works perfectly.
There's a variety of problems we have with empty base classes, might be one of 
those, and they are usually easy to fix because, well, yes it's a special case, 
but it's also an extremely simple case.

I encourage you to open up the Exploded Graph and study it carefully to see 
what and where goes wrong (not for this revision).


Repository:
  rC Clang

https://reviews.llvm.org/D50892



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

Reply via email to