aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Bitcode')
-rw-r--r--llvm/lib/Bitcode/Reader/MetadataLoader.cpp13
-rw-r--r--llvm/lib/Bitcode/Writer/BitcodeWriter.cpp17
2 files changed, 6 insertions, 24 deletions
diff --git a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
index 4151e02..15e2386b 100644
--- a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
+++ b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
@@ -554,7 +554,7 @@ class MetadataLoader::MetadataLoaderImpl {
}
/// Upgrade the expression from previous versions.
- Error upgradeDIExpression(uint64_t FromVersion, bool &IsDistinct,
+ Error upgradeDIExpression(uint64_t FromVersion,
MutableArrayRef<uint64_t> &Expr,
SmallVectorImpl<uint64_t> &Buffer) {
auto N = Expr.size();
@@ -628,9 +628,6 @@ class MetadataLoader::MetadataLoaderImpl {
LLVM_FALLTHROUGH;
}
case 3:
- IsDistinct = false;
- LLVM_FALLTHROUGH;
- case 4:
// Up-to-date!
break;
}
@@ -2005,13 +2002,11 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
auto Elts = MutableArrayRef<uint64_t>(Record).slice(1);
SmallVector<uint64_t, 6> Buffer;
- if (Error Err = upgradeDIExpression(Version, IsDistinct, Elts, Buffer))
+ if (Error Err = upgradeDIExpression(Version, Elts, Buffer))
return Err;
- if (IsDistinct)
- return error("Invalid record");
-
- MetadataList.assignValue(DIExpression::get(Context, Elts), NextMetadataNo);
+ MetadataList.assignValue(
+ GET_OR_DISTINCT(DIExpression, (Context, Elts)), NextMetadataNo);
NextMetadataNo++;
break;
}
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
index a92c11e..fd77a8c 100644
--- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
@@ -1766,6 +1766,7 @@ void ModuleBitcodeWriter::writeDIFile(const DIFile *N,
void ModuleBitcodeWriter::writeDICompileUnit(const DICompileUnit *N,
SmallVectorImpl<uint64_t> &Record,
unsigned Abbrev) {
+ assert(N->isDistinct() && "Expected distinct compile units");
Record.push_back(/* IsDistinct */ true);
Record.push_back(N->getSourceLanguage());
Record.push_back(VE.getMetadataOrNullID(N->getFile()));
@@ -2019,7 +2020,7 @@ void ModuleBitcodeWriter::writeDIExpression(const DIExpression *N,
SmallVectorImpl<uint64_t> &Record,
unsigned Abbrev) {
Record.reserve(N->getElements().size() + 1);
- const uint64_t Version = 4 << 1;
+ const uint64_t Version = 3 << 1;
Record.push_back((uint64_t)N->isDistinct() | Version);
Record.append(N->elements_begin(), N->elements_end());
@@ -2165,20 +2166,6 @@ void ModuleBitcodeWriter::writeMetadataRecords(
if (const MDNode *N = dyn_cast<MDNode>(MD)) {
assert(N->isResolved() && "Expected forward references to be resolved");
-#ifndef NDEBUG
- switch (N->getMetadataID()) {
-#define HANDLE_MDNODE_LEAF_UNIQUED(CLASS) \
- case Metadata::CLASS##Kind: \
- assert(!N->isDistinct() && "Expected non-distinct " #CLASS); \
- break;
-#define HANDLE_MDNODE_LEAF_DISTINCT(CLASS) \
- case Metadata::CLASS##Kind: \
- assert(N->isDistinct() && "Expected distinct " #CLASS); \
- break;
-#include "llvm/IR/Metadata.def"
- }
-#endif
-
switch (N->getMetadataID()) {
default:
llvm_unreachable("Invalid MDNode subclass");