baloghadamsoftware marked 6 inline comments as done.
baloghadamsoftware added inline comments.
================
Comment at: clang/lib/StaticAnalyzer/Checkers/DebugIteratorModeling.cpp:91-111
SVal V = C.getSVal(CE->getArg(0));
const auto *Pos = getIteratorPosition(State, V);
+ SVal Field = Default;
+
if (Pos) {
- State = State->BindExpr(CE, C.getLocationContext(), get(Pos));
- } else {
- State = State->BindExpr(CE, C.getLocationContext(), Default);
+ Field = get(Pos);
}
----------------
Szelethus wrote:
> Now that we have multiple `SVal`s around, can we rename `V`? Also, I would
> appreciate some comments. As I understand it, `ExprInspectionChecker` now
> marks the arguments as interesting, so if we write this:
> ```lang=cpp
> clang_analyzer_express(clang_analyzer_iterator_position(i2));
> ```
> `clang_analyzer_iterator_position(i2)` will be interesting, and this function
> propagates this interestingness to `i2`, correct?
Yes.
================
Comment at: clang/test/Analysis/iterator-modelling.cpp:169
clang_analyzer_eval(clang_analyzer_iterator_container(i2) == &v); //
expected-warning{{TRUE}}
//
expected-note@-1{{TRUE}}
----------------
Szelethus wrote:
> Interestingness won't be propagated here because
> `clang_analyzer_iterator_container(i2) == &v` is interesting, not
> `clang_analyzer_iterator_container(i2)`, correct?
Currently only `clang_analyzer_express()` marks its argument as interesting.
This could be extended in the future, however the argument of
`clang_analyzer_eval()` is usually the result of the comparison, not the
symbolic comparison itself so the sides of the comparison are not reachable at
that point.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D75677/new/
https://reviews.llvm.org/D75677
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits