From 382d81cacf066452b98128b680f0988e5bda89a8 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Wed, 1 Jun 2016 01:17:57 +0000 Subject: IR: Allow multiple global metadata attachments with the same type. This will be necessary to allow the global merge pass to attach multiple debug info metadata nodes to global variables once we reverse the edge from DIGlobalVariable to GlobalVariable. Differential Revision: http://reviews.llvm.org/D20414 llvm-svn: 271358 --- llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 2 +- llvm/lib/Bitcode/Writer/ValueEnumerator.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'llvm/lib/Bitcode') diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 55c0d064938..287be9b683a 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -4167,7 +4167,7 @@ std::error_code BitcodeReader::parseGlobalObjectAttachment( MDNode *MD = MetadataList.getMDNodeFwdRefOrNull(Record[I + 1]); if (!MD) return error("Invalid metadata attachment"); - GO.setMetadata(K->second, MD); + GO.addMetadata(K->second, *MD); } return std::error_code(); } diff --git a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp index 6051173eed6..98eb7faf224 100644 --- a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp +++ b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp @@ -345,6 +345,7 @@ ValueEnumerator::ValueEnumerator(const Module &M, SmallVector, 8> MDs; for (const GlobalVariable &GV : M.globals()) { + MDs.clear(); GV.getAllMetadata(MDs); for (const auto &I : MDs) EnumerateMetadata(&GV, I.second); @@ -356,6 +357,7 @@ ValueEnumerator::ValueEnumerator(const Module &M, EnumerateType(A.getType()); // Enumerate metadata attached to this function. + MDs.clear(); F.getAllMetadata(MDs); for (const auto &I : MDs) EnumerateMetadata(&F, I.second); -- cgit v1.2.3