[Analysis] Make LocationSizes carry an 'imprecise' bit
authorGeorge Burgess IV <george.burgess.iv@gmail.com>
Wed, 10 Oct 2018 06:39:40 +0000 (06:39 +0000)
committerGeorge Burgess IV <george.burgess.iv@gmail.com>
Wed, 10 Oct 2018 06:39:40 +0000 (06:39 +0000)
commit40dc63e1f0928ee31ae30390e6b03a6c79dc178c
treecfd9bf6353bc9a761f5d25e3213a0a1e87bb641d
parent1d893bfcea1b7149b1f55b103f7654e68e91d6b6
[Analysis] Make LocationSizes carry an 'imprecise' bit

There are places where we need to merge multiple LocationSizes of
different sizes into one, and get a sensible result.

There are other places where we want to optimize aggressively based on
the value of a LocationSizes (e.g. how can a store of four bytes be to
an area of storage that's only two bytes large?)

This patch makes LocationSize hold an 'imprecise' bit to note whether
the LocationSize can be treated as an upper-bound and lower-bound for
the size of a location, or just an upper-bound.

This concludes the series of patches leading up to this. The most recent
of which is r344108.

Fixes PR36228.

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

llvm-svn: 344114
llvm/include/llvm/Analysis/AliasSetTracker.h
llvm/include/llvm/Analysis/MemoryLocation.h
llvm/lib/Analysis/BasicAliasAnalysis.cpp
llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
llvm/lib/Analysis/MemoryLocation.cpp
llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
llvm/test/Transforms/LICM/pr36228.ll [new file with mode: 0644]
llvm/unittests/Analysis/BasicAliasAnalysisTest.cpp [new file with mode: 0644]
llvm/unittests/Analysis/CMakeLists.txt