]> granicus.if.org Git - clang/commit
[analyzer] Remove the "postponed" hack, deal with derived symbols using an extra map
authorGeorge Karpenkov <ekarpenkov@apple.com>
Fri, 7 Sep 2018 22:07:57 +0000 (22:07 +0000)
committerGeorge Karpenkov <ekarpenkov@apple.com>
Fri, 7 Sep 2018 22:07:57 +0000 (22:07 +0000)
commit43322674aca8c09edb8c522b8cb988071d9c3dcb
treeceefdeced8a28c8ccadf9ef4818dd729c3f2045e
parent71ac9ba16b6d03408c8fc21fc9422eea49f460d4
[analyzer] Remove the "postponed" hack, deal with derived symbols using an extra map

The "derived" symbols indicate children fields of a larger symbol.
As parents do not have pointers to their children, the garbage
collection algorithm the analyzer currently uses adds such symbols into
a "postponed" category, and then keeps running through the worklist
until the fixed point is reached.

The current patch rectifies that by instead using a helper map which
stores pointers from parents to children, so that no fixed point
calculation is necessary.

The current patch yields ~5% improvement in running time on sqlite.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@341722 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
lib/StaticAnalyzer/Core/RegionStore.cpp