RedDocMD marked 3 inline comments as done.
RedDocMD added inline comments.

================
Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrChecker.cpp:106-109
+    if (const auto *DS = llvm::dyn_cast<DeclStmt>(S)) {
+      for (const Decl *D : DS->getDeclGroup()) {
+        if (const VarDecl *VD = llvm::dyn_cast<VarDecl>(D)) {
+          const Expr *Init = VD->getInit();
----------------
steakhal wrote:
> RedDocMD wrote:
> > steakhal wrote:
> > > So you are trying to find the assignment, where the inner pointer is 
> > > assigned to a variable.
> > > This visitor logic seems to be somewhat convoluted.
> > > 
> > > What you want to achieve is slightly similar to `FindLastStoreBRVisitor`. 
> > > You should have a look at that.
> > That is what I had done before. @NoQ pointed out why this wouldn't work in 
> > a previous comment.
> Please elaborate on that.
> I'm not saying that an already existing visitor would perfectly fit your 
> needs. I'm just curious why a //similar// logic would not work for you. You 
> are trying to iterate over a bunch of decls and init exprs etc. And there is 
> nothing similar to the visitor I mentioned.
Sorry. I should have written it out better.
> So you are trying to find the assignment, where the inner pointer is assigned 
> to a variable.
Yes and no. I am indeed trying to find where the //first// assignment occurred, 
since re-assigning to the pointer obtained from `get()` doesn't give any 
information regarding regarding the smart pointer being null or not. So what 
this visitor does that it goes back to the original assignment to find out what 
SVal was bound to `a.get()`. The Environment doesn't have this info since it is 
garbage collected somewhere on the way. Also accessing this State allows me to 
check whether the SVal was null to begin with.
I don't think `FindLastStoreBRVisitor` does this.


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

Reply via email to