diff options
author | Devang Patel <dpatel@apple.com> | 2010-06-22 18:52:38 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2010-06-22 18:52:38 +0000 |
commit | e3fbbd19ed48493e9ed7e7f2a594c1b5e11012a2 (patch) | |
tree | e131567c27e2ce1d33f4034775aabf0c57576156 /llvm/lib/Transforms/Utils/CloneModule.cpp | |
parent | 3af915f84baa7625fcb6210b649a6dc3bf3384f0 (diff) | |
download | bcm5719-llvm-e3fbbd19ed48493e9ed7e7f2a594c1b5e11012a2.tar.gz bcm5719-llvm-e3fbbd19ed48493e9ed7e7f2a594c1b5e11012a2.zip |
Clone named metadata while cloning a module.
Reapply Bob's patch.
llvm-svn: 106560
Diffstat (limited to 'llvm/lib/Transforms/Utils/CloneModule.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/CloneModule.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Utils/CloneModule.cpp b/llvm/lib/Transforms/Utils/CloneModule.cpp index b87c082793e..1809bbb3201 100644 --- a/llvm/lib/Transforms/Utils/CloneModule.cpp +++ b/llvm/lib/Transforms/Utils/CloneModule.cpp @@ -122,6 +122,17 @@ Module *llvm::CloneModule(const Module *M, if (const Constant* C = I->getAliasee()) GA->setAliasee(cast<Constant>(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<MDNode*, 4> MDs; + for (unsigned i = 0, e = NMD.getNumOperands(); i != e; ++i) + MDs.push_back(cast<MDNode>(MapValue(NMD.getOperand(i), ValueMap))); + NamedMDNode::Create(New->getContext(), NMD.getName(), + MDs.data(), MDs.size(), New); + } return New; } |