diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2016-03-27 23:53:30 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2016-03-27 23:53:30 +0000 |
commit | 80d153f6aa3f230202d3a04f382afa286e7e06c1 (patch) | |
tree | bac574ee3e9ebc41bede7370d76851aa57112c53 /llvm/lib/Bitcode | |
parent | 5465f0adc461d9816a5dd1b4d09ca5d7960ba90a (diff) | |
download | bcm5719-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.cpp | 26 |
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(); } |