diff options
| author | Piotr Padlewski <prazek@google.com> | 2015-10-02 22:12:22 +0000 |
|---|---|---|
| committer | Piotr Padlewski <prazek@google.com> | 2015-10-02 22:12:22 +0000 |
| commit | dc9b2cfc5013684456ec7d632eaa2edf7c030f2b (patch) | |
| tree | aedc153caf7a87e8ddb930b4974f389663f9b1cc /llvm/lib/Transforms/Vectorize | |
| parent | 1f31a2c11c1aa56431c43bfe62f8465635801058 (diff) | |
| download | bcm5719-llvm-dc9b2cfc5013684456ec7d632eaa2edf7c030f2b.tar.gz bcm5719-llvm-dc9b2cfc5013684456ec7d632eaa2edf7c030f2b.zip | |
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
llvm-svn: 249196
Diffstat (limited to 'llvm/lib/Transforms/Vectorize')
| -rw-r--r-- | llvm/lib/Transforms/Vectorize/BBVectorize.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Vectorize/BBVectorize.cpp b/llvm/lib/Transforms/Vectorize/BBVectorize.cpp index 3a36d68c388..deab903cd99 100644 --- a/llvm/lib/Transforms/Vectorize/BBVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/BBVectorize.cpp @@ -3120,12 +3120,9 @@ namespace { } else if (!isa<StoreInst>(K)) K->mutateType(getVecTypeForPair(L->getType(), H->getType())); - unsigned KnownIDs[] = { - LLVMContext::MD_tbaa, - LLVMContext::MD_alias_scope, - LLVMContext::MD_noalias, - LLVMContext::MD_fpmath - }; + unsigned KnownIDs[] = {LLVMContext::MD_tbaa, LLVMContext::MD_alias_scope, + LLVMContext::MD_noalias, LLVMContext::MD_fpmath, + LLVMContext::MD_invariant_group}; combineMetadata(K, H, KnownIDs); K->intersectOptionalDataWith(H); |

