forked from OSchip/llvm-project
b493124ae2
The implementation is mostly copied from MemDepAnalysis. We want to look at all loads and stores to the same pointer operand. Bitcasts and zero GEPs of a pointer are considered the same pointer value. We choose the most dominating instruction. Since updating MemorySSA with invariant.group is non-trivial, for now handling of invariant.group is not cached in any way, so it's part of the walker. The number of loads/stores with invariant.group is small for now anyway. We can revisit if this actually noticeably affects compile times. To avoid invariant.group affecting optimized uses, we need to have optimizeUsesInBlock() not use invariant.group in any way. Co-authored-by: Piotr Padlewski <prazek@google.com> Reviewed By: asbirlea, nikic, Prazek Differential Revision: https://reviews.llvm.org/D109134 |
||
---|---|---|
.. | ||
Inputs/ir2native_x86_64_model | ||
AliasAnalysisTest.cpp | ||
AliasSetTrackerTest.cpp | ||
AssumeBundleQueriesTest.cpp | ||
BasicAliasAnalysisTest.cpp | ||
BlockFrequencyInfoTest.cpp | ||
BranchProbabilityInfoTest.cpp | ||
CFGTest.cpp | ||
CGSCCPassManagerTest.cpp | ||
CMakeLists.txt | ||
CallGraphTest.cpp | ||
CaptureTrackingTest.cpp | ||
ConstraintSystemTest.cpp | ||
DDGTest.cpp | ||
DivergenceAnalysisTest.cpp | ||
DomTreeUpdaterTest.cpp | ||
FunctionPropertiesAnalysisTest.cpp | ||
GlobalsModRefTest.cpp | ||
IRSimilarityIdentifierTest.cpp | ||
IVDescriptorsTest.cpp | ||
InlineCostTest.cpp | ||
LazyCallGraphTest.cpp | ||
LoadsTest.cpp | ||
LoopInfoTest.cpp | ||
LoopNestTest.cpp | ||
MemoryBuiltinsTest.cpp | ||
MemorySSATest.cpp | ||
PhiValuesTest.cpp | ||
ProfileSummaryInfoTest.cpp | ||
ScalarEvolutionTest.cpp | ||
SparsePropagation.cpp | ||
TBAATest.cpp | ||
TFUtilsTest.cpp | ||
TargetLibraryInfoTest.cpp | ||
UnrollAnalyzerTest.cpp | ||
ValueLatticeTest.cpp | ||
ValueTrackingTest.cpp | ||
VectorFunctionABITest.cpp | ||
VectorUtilsTest.cpp |