inariant.group handling in GVN
authorPiotr Padlewski <prazek@google.com>
Fri, 2 Oct 2015 22:12:22 +0000 (22:12 +0000)
committerPiotr Padlewski <prazek@google.com>
Fri, 2 Oct 2015 22:12:22 +0000 (22:12 +0000)
commit264b0361be31a06567513bbd7d9b7d974a4d064e
tree7122dfe8864e2b9919830a08f9c0ec7b827c68f8
parentf351bce7bdc72712bebb344800b231bb547ab681
inariant.group handling in GVN

The most important part required to make clang
devirtualization works ( ͡°͜ʖ ͡°).
The code is able to find non local dependencies, but unfortunatelly
because the caller can only handle local dependencies, I had to add
some restrictions to look for dependencies only in the same BB.

http://reviews.llvm.org/D12992

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249196 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/MemoryDependenceAnalysis.h
lib/Analysis/MemoryDependenceAnalysis.cpp
lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
lib/Transforms/Scalar/GVN.cpp
lib/Transforms/Scalar/MemCpyOptimizer.cpp
lib/Transforms/Utils/Local.cpp
lib/Transforms/Utils/SimplifyCFG.cpp
lib/Transforms/Vectorize/BBVectorize.cpp
test/Transforms/GVN/assume-equal.ll
test/Transforms/GVN/invariant.group.ll [new file with mode: 0644]