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