[Analyzer] Instead of recording comparisons in interator checkers do an eager state...
authorAdam Balogh <adam.balogh@ericsson.com>
Tue, 23 Apr 2019 07:15:55 +0000 (07:15 +0000)
committerAdam Balogh <adam.balogh@ericsson.com>
Tue, 23 Apr 2019 07:15:55 +0000 (07:15 +0000)
commit54976e76e672076176840dbde52759de4f096630
treebe0259a1bdc985e1313685f8f44711e87d23061a
parentd986e41fe49e3ff33aa609328b34cb20dd350434
[Analyzer] Instead of recording comparisons in interator checkers do an eager state split

Currently iterator checkers record comparison of iterator positions
and process them for keeping track the distance between them (e.g.
whether a position is the same as the end position). However this
makes some processing unnecessarily complex and it is not needed at
all: we only need to keep track between the abstract symbols stored
in these iterator positions. This patch changes this and opens the
path to comparisons to the begin() and end() symbols between the
container (e.g. size, emptiness) which are stored as symbols, not
iterator positions. The functionality of the checker is unchanged.

Differential Revision: https://reviews.llvm.org/D53701

llvm-svn: 358951
clang/lib/StaticAnalyzer/Checkers/IteratorChecker.cpp