[PATCH] D61136: [Analyzer] IteratorChecker - Ensure end()>=begin() and refactor begin and end symbol creation
Artem Dergachev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 25 14:15:54 PDT 2019
NoQ added a comment.
Aha, yup, thx!
Do you plan to centralize other code paths on which you conjure symbols?
'Cause i still believe that given that we now support C++ (our prvalues are now properly materialized) (most of the time), you should be able to remove support for symbol-like iterators, and then replace your position symbols with `SymbolMetadata`.
================
Comment at: lib/StaticAnalyzer/Checkers/IteratorChecker.cpp:1929-1930
+
+ auto &SymMgr = State->getSymbolManager();
+ auto Sym = SymMgr.conjureSymbol(E, LCtx, T, BlockCount, "end");
+ State = assumeNoOverflow(State, Sym, 4);
----------------
This is a bit more `auto` than allowed by [[ https://llvm.org/docs/CodingStandards.html#use-auto-type-deduction-to-make-code-more-readable | our coding standards ]] (it pretty much disallows `auto` unless it's some sort of `dyn_cast` (`getAs`) or an iterator.
================
Comment at: lib/StaticAnalyzer/Checkers/IteratorChecker.cpp:2247
+ProgramStateRef ensureNonNegativeDiff(ProgramStateRef State, SymbolRef Sym1,
+ SymbolRef Sym2) {
----------------
This looks like a new feature. Is it testable?
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D61136/new/
https://reviews.llvm.org/D61136
More information about the cfe-commits
mailing list