Szelethus added a comment. In https://reviews.llvm.org/D49438#1189772, @george.karpenkov wrote:
> > I think what pointer chasing should do, is check whether that pointer owns > > the pointee > > But ownership is a convention, and it's not always deducible from a codebase. How about the following case: struct A { struct B { int b; }; std::unique_ptr<B> ptr; A() : ptr(new B) {} }; A a; Here, `a->ptr->b` is clearly uninitialized, and I think it's fine to assume in most cases that no other pointer points to it right after `a`'s construction. > I think of those as two separate checks, and I think we should only talk > about enabling the pointer-chasing after we had established that just > checking for uninitialized fields finds lots of valid bugs (and we can only > do that after it gets enabled for many projects) I think in the earlier case `*this->ptr` should be regarded as a regular field, and it could be analyzed without fear of spamming too many reports. Currently the biggest problem is that many objects could contain references to the same object: struct A { int x; }; struct B { A &a; B(A &a) : a(a) {} }; struct C { A &a; C(A &a) : a(a) {} }; A a; B b(a); C c(a); // a.x reported twice https://reviews.llvm.org/D49438 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits