Fix getMDs() interface such that it does not expose implementation details.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84885 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Bitcode/Writer/ValueEnumerator.cpp b/lib/Bitcode/Writer/ValueEnumerator.cpp
index 4257281..85aa5fa 100644
--- a/lib/Bitcode/Writer/ValueEnumerator.cpp
+++ b/lib/Bitcode/Writer/ValueEnumerator.cpp
@@ -87,6 +87,8 @@
EnumerateType(I->getType());
MetadataContext &TheMetadata = F->getContext().getMetadata();
+ typedef SmallVector<std::pair<unsigned, TrackingVH<MDNode> >, 2> MDMapTy;
+ MDMapTy MDs;
for (Function::const_iterator BB = F->begin(), E = F->end(); BB != E; ++BB)
for (BasicBlock::const_iterator I = BB->begin(), E = BB->end(); I!=E;++I){
for (User::const_op_iterator OI = I->op_begin(), E = I->op_end();
@@ -99,11 +101,11 @@
EnumerateAttributes(II->getAttributes());
// Enumerate metadata attached with this instruction.
- const MetadataContext::MDMapTy *MDs = TheMetadata.getMDs(I);
- if (MDs)
- for (MetadataContext::MDMapTy::const_iterator MI = MDs->begin(),
- ME = MDs->end(); MI != ME; ++MI)
- EnumerateMetadata(MI->second);
+ MDs.clear();
+ TheMetadata.getMDs(I, MDs);
+ for (MDMapTy::const_iterator MI = MDs.begin(), ME = MDs.end(); MI != ME;
+ ++MI)
+ EnumerateMetadata(MI->second);
}
}