This patch adds support for the following operations in the iterator checkers: push_back, push_front, emplace_back, emplace_front, pop_back and pop_front. This affects iterator range checks (range is extended after push and emplace and reduced after pop operations) and invalidation checks (according to the standard).
NoQ george.karpenkov dcoughlin
- rL341793: [Analyzer] Iterator Checker - Part 7: Support for push and pop operations
rC341793: [Analyzer] Iterator Checker - Part 7: Support for push and pop operations
rG9a48ba6b4aa3: [Analyzer] Iterator Checker - Part 7: Support for push and pop operations
Rebased to Part6. Also fixed a test failing now: it is not enough to mark the symbolic expressions as live, but if it is a SymIntExpr (it can be nothing else, except SymbolConjured), we also have to mark the left side of it (which is always SymbolConjured) as live. Using scanReachableSymbols() here would be too heavyweight.
|1449–1464 ↗||(On Diff #97942)|
I changed the function to use getDynamicTypeInfo(), but now I had to include a ProgramStateRef parameter to the function and to all its callers so it did not become much more simple.
|1477–1530 ↗||(On Diff #144330)|
Here we do not need the qualified name.