diff options
author | Mehdi Amini <mehdi.amini@apple.com> | 2016-12-16 19:16:29 +0000 |
---|---|---|
committer | Mehdi Amini <mehdi.amini@apple.com> | 2016-12-16 19:16:29 +0000 |
commit | 8662305bae83768a73057cd9f9e3b93df8c3a037 (patch) | |
tree | 1654c758f89c04039f510dfdeffdcf8cdf1f9da5 /llvm/lib/Bitcode/Reader/MetadataLoader.cpp | |
parent | c66e7e3b8c3baa213864259505790aeb726429ee (diff) | |
download | bcm5719-llvm-8662305bae83768a73057cd9f9e3b93df8c3a037.tar.gz bcm5719-llvm-8662305bae83768a73057cd9f9e3b93df8c3a037.zip |
Strip invalid TBAA when reading bitcode
This ensures backward compatibility on bitcode loading.
Differential Revision: https://reviews.llvm.org/D27839
llvm-svn: 289977
Diffstat (limited to 'llvm/lib/Bitcode/Reader/MetadataLoader.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Reader/MetadataLoader.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp index b47628dde28..96601100e34 100644 --- a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp +++ b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp @@ -382,6 +382,7 @@ class MetadataLoader::MetadataLoaderImpl { // Map the bitcode's custom MDKind ID to the Module's MDKind ID. DenseMap<unsigned, unsigned> MDKindMap; + bool StripTBAA = false; bool HasSeenOldLoopTags = false; Error parseMetadataStrings(ArrayRef<uint64_t> Record, StringRef Blob, @@ -420,6 +421,9 @@ public: Error parseMetadataKinds(); + void setStripTBAA(bool Value) { StripTBAA = Value; } + bool isStrippingTBAA() { return StripTBAA; } + unsigned size() const { return MetadataList.size(); } void shrinkTo(unsigned N) { MetadataList.shrinkTo(N); } }; @@ -1208,6 +1212,9 @@ Error MetadataLoader::MetadataLoaderImpl::parseMetadataAttachment( DenseMap<unsigned, unsigned>::iterator I = MDKindMap.find(Kind); if (I == MDKindMap.end()) return error("Invalid ID"); + if (I->second == LLVMContext::MD_tbaa && StripTBAA) + continue; + Metadata *Node = MetadataList.getMetadataFwdRef(Record[i + 1]); if (isa<LocalAsMetadata>(Node)) // Drop the attachment. This used to be legal, but there's no @@ -1327,5 +1334,11 @@ Error MetadataLoader::parseMetadataKinds() { return Pimpl->parseMetadataKinds(); } +void MetadataLoader::setStripTBAA(bool StripTBAA) { + return Pimpl->setStripTBAA(StripTBAA); +} + +bool MetadataLoader::isStrippingTBAA() { return Pimpl->isStrippingTBAA(); } + unsigned MetadataLoader::size() const { return Pimpl->size(); } void MetadataLoader::shrinkTo(unsigned N) { return Pimpl->shrinkTo(N); } |