NoQ added a comment. By tracking the call-expression you're basically tracking the raw pointer value because that's what operators `*` and `->` return. Of course operator `*` returns an lvalue reference rather than a pointer but we don't make a difference when it comes to `SVal` representation.
F15896979: 525m0x.jpg <https://reviews.llvm.org/F15896979> So you're saying that simply by always tracking the (final) raw pointer value and checking whether the raw value is interesting upon `.get()` you dodge the communication problem entirely. I think this is quite a statement! I'd like a stronger evidence for that than passing a couple of tests. Does the following test work?: void test(std::unique_ptr<A> P) { A *a = P.get(); // unlike your positive test this doesn't deserve a note // because we weren't looking at 'a' when we concluded // that the pointer is null if (!P) { P->foo(); } } > Essentially, when a `unique_ptr` is moved and subsequently used, it triggers > two warnings - one from `SmartPointerModelling` and another from `MoveChecker` Do i understand correctly that this doesn't happen anymore when you stopped creating a new node? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D97183/new/ https://reviews.llvm.org/D97183 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits