RedDocMD added a comment.

> Does the following test work?

@NoQ, it seems to be working.

> 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 would not say it has been dodged, but rather that problem had already been 
solved by `trackExpressionValue`. At line 1949 of BugReporterVisitors.cpp 
(inside the `trackExpressionValue` function) is:

  if (LVState->getAnalysisManager().getAnalyzerOptions().ShouldTrackConditions)
      report.addVisitor(std::make_unique<TrackControlDependencyCondBRVisitor>(
            InputNode));

Approximately, `TrackControlDependencyCondBRVisitor` is a visitor that looks 
into condition statements and via mutual recursion with `trackExpressionValue` 
marks SVal's as interesting if they are used in a condition and that condition 
constrains the `Expr` on which the visitor was originally called on. This gave 
me the idea that calling `trackExpressionValue` is all that we really need to 
do, since it already contains a visitor to discover the interestingness we 
need. Looking into this function made me feel that `trackExpressionValue` is 
actually a very powerful function which solves a lot of these communication 
problems.

> Do i understand correctly that this doesn't happen anymore when you stopped 
> creating a new node?

Yes, and I found out my blunder after staring at the exploded graph dump. 
Creating a new node was un-necessary since `trackExpressionValue` needs a node 
corresponding to the expression where we find the bug, and that was already 
being created above.


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