NoQ added inline comments.

================
Comment at: clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp:603
+  // point.
+  class CollectReachableSymbolsCallback final : public SymbolVisitor {
+    ProgramStateRef State;
----------------
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).


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