xazax.hun marked an inline comment as done.
xazax.hun added inline comments.


================
Comment at: clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp:603
+  // point.
+  class CollectReachableSymbolsCallback final : public SymbolVisitor {
+    ProgramStateRef State;
----------------
NoQ wrote:
> xazax.hun wrote:
> > NoQ wrote:
> > > xazax.hun wrote:
> > > > NoQ wrote:
> > > > > WDYT about re-using `ExprEngine::escapeValue()` by changing it to 
> > > > > accept `ArrayRef<SVal>` instead of a single `SVal`?
> > > > It is not entirely the same. Here we only collect symbols from 
> > > > non-stack regions. There (as far as I understand) we collect all 
> > > > symbols. I could add a flag but at that point I wonder if it is worth 
> > > > the change.
> > > Umm, wait, right, so what are you doing in this callback to begin with? 
> > > The code says "gather all symbols that are encountered as immediate 
> > > values stored in traversed regions". Why not simply "gather all symbols 
> > > that are traversed from parameter regions"?
> > My understanding is the following but correct me if I am wrong:
> > 
> > ```
> > int *getConjuredSymbol();
> > 
> > call(getConjuredSymbol());
> > ```
> > 
> > So we have can talk about two symbols here. One symbol is what was returned 
> > by `getConjuredSymbol` and the other is the pointee, the symbol that we get 
> > when we dereference the result of `getConjuredSymbol`. And my understanding 
> > is that we want to invoke escape for the latter and not the former. 
> > `ExprEngine::escapeValue` invalidates the former but not the latter. The 
> > visitor here invalidates the latter but not the former.  This behavior 
> > solves most of my test cases in FuchsiaHandleChecker. 
> How about `escapeValue(getSVal(getArgSVal()))`? (the type for `getSVal()` 
> could be obtained from the AST).
Hmm, I believe that could work, thanks!


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71224/new/

https://reviews.llvm.org/D71224



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to