From d8800e797261285f91c2a3382215fd740e6f875d Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Tue, 22 Jun 2010 18:52:38 +0000 Subject: [PATCH] Clone named metadata while cloning a module. Reapply Bob's patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106560 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Utils/CloneModule.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/Transforms/Utils/CloneModule.cpp b/lib/Transforms/Utils/CloneModule.cpp index b87c082793e..1809bbb3201 100644 --- a/lib/Transforms/Utils/CloneModule.cpp +++ b/lib/Transforms/Utils/CloneModule.cpp @@ -122,6 +122,17 @@ Module *llvm::CloneModule(const Module *M, if (const Constant* C = I->getAliasee()) GA->setAliasee(cast(MapValue(C, ValueMap))); } + + // And named metadata.... + for (Module::const_named_metadata_iterator I = M->named_metadata_begin(), + E = M->named_metadata_end(); I != E; ++I) { + const NamedMDNode &NMD = *I; + SmallVector MDs; + for (unsigned i = 0, e = NMD.getNumOperands(); i != e; ++i) + MDs.push_back(cast(MapValue(NMD.getOperand(i), ValueMap))); + NamedMDNode::Create(New->getContext(), NMD.getName(), + MDs.data(), MDs.size(), New); + } return New; } -- 2.11.0