summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bitcode
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2016-03-27 23:53:30 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2016-03-27 23:53:30 +0000
commit80d153f6aa3f230202d3a04f382afa286e7e06c1 (patch)
treebac574ee3e9ebc41bede7370d76851aa57112c53 /llvm/lib/Bitcode
parent5465f0adc461d9816a5dd1b4d09ca5d7960ba90a (diff)
downloadbcm5719-llvm-80d153f6aa3f230202d3a04f382afa286e7e06c1.tar.gz
bcm5719-llvm-80d153f6aa3f230202d3a04f382afa286e7e06c1.zip
BitcodeWriter: Split out writeMetadataRecords, NFC
Besides being a nice cleanup, this is preparation for reusing the code in function metadata blocks. llvm-svn: 264555
Diffstat (limited to 'llvm/lib/Bitcode')
-rw-r--r--llvm/lib/Bitcode/Writer/BitcodeWriter.cpp26
1 files changed, 17 insertions, 9 deletions
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
index e173d80eafb..fc2ab021bed 100644
--- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
@@ -1391,21 +1391,18 @@ static void writeMetadataStrings(ArrayRef<const Metadata *> Strings,
Record.clear();
}
-static void WriteModuleMetadata(const Module &M,
- const ValueEnumerator &VE,
- BitstreamWriter &Stream) {
- if (VE.getMDs().empty() && M.named_metadata_empty())
+static void writeMetadataRecords(ArrayRef<const Metadata *> MDs,
+ const ValueEnumerator &VE,
+ BitstreamWriter &Stream,
+ SmallVectorImpl<uint64_t> &Record) {
+ if (MDs.empty())
return;
- Stream.EnterSubblock(bitc::METADATA_BLOCK_ID, 3);
-
// Initialize MDNode abbreviations.
#define HANDLE_MDNODE_LEAF(CLASS) unsigned CLASS##Abbrev = 0;
#include "llvm/IR/Metadata.def"
- SmallVector<uint64_t, 64> Record;
- writeMetadataStrings(VE.getMDStrings(), Stream, Record);
- for (const Metadata *MD : VE.getNonMDStrings()) {
+ for (const Metadata *MD : MDs) {
if (const MDNode *N = dyn_cast<MDNode>(MD)) {
assert(N->isResolved() && "Expected forward references to be resolved");
@@ -1421,7 +1418,18 @@ static void WriteModuleMetadata(const Module &M,
}
WriteValueAsMetadata(cast<ConstantAsMetadata>(MD), VE, Stream, Record);
}
+}
+static void WriteModuleMetadata(const Module &M,
+ const ValueEnumerator &VE,
+ BitstreamWriter &Stream) {
+ if (VE.getMDs().empty() && M.named_metadata_empty())
+ return;
+
+ Stream.EnterSubblock(bitc::METADATA_BLOCK_ID, 3);
+ SmallVector<uint64_t, 64> Record;
+ writeMetadataStrings(VE.getMDStrings(), Stream, Record);
+ writeMetadataRecords(VE.getNonMDStrings(), VE, Stream, Record);
writeNamedMetadata(M, VE, Stream, Record);
Stream.ExitBlock();
}
OpenPOWER on IntegriCloud