summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/APInt.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-02-03 03:06:46 +0000
committerTed Kremenek <kremenek@apple.com>2010-02-03 03:06:46 +0000
commit64efd0d21329dc62ba6c1f1b3967e11b20079785 (patch)
tree987616090bab9fde1763452de0b9ec69601596f1 /llvm/lib/Support/APInt.cpp
parentdb56b919e522883b16ad45015ee64dd37ed933a6 (diff)
downloadbcm5719-llvm-64efd0d21329dc62ba6c1f1b3967e11b20079785.tar.gz
bcm5719-llvm-64efd0d21329dc62ba6c1f1b3967e11b20079785.zip
Rework RegionStoreManager's implementation of InvalidateRegions() to
not build a subregion map and instead do a single scan of the store. This is done by building "region clusters" that represent the collection of regions that have the same base region. Invalidating any region in a cluster means that they all should get invalidated. This change brought out a point that Zhongxing mentioned to me offline: the flattened memory binding has issues distinguishing between direct and default bindings. For example, setting the default value for an entire struct is the same as binding to the first element. To address this problem, I moved the binding "tag" (Direct or Default) from BindingVal to BdingKey (and removed BindingVal entirely). This requires us to do double lookups in some cases; and there is still much more cleanup that can be done. This change produced a noticeable speedup when analyzing sqlite3 (a reduction of 4% in running time). llvm-svn: 95193
Diffstat (limited to 'llvm/lib/Support/APInt.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud