summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/CloneModule.cpp
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2010-06-22 18:52:38 +0000
committerDevang Patel <dpatel@apple.com>2010-06-22 18:52:38 +0000
commite3fbbd19ed48493e9ed7e7f2a594c1b5e11012a2 (patch)
treee131567c27e2ce1d33f4034775aabf0c57576156 /llvm/lib/Transforms/Utils/CloneModule.cpp
parent3af915f84baa7625fcb6210b649a6dc3bf3384f0 (diff)
downloadbcm5719-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.cpp11
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;
}
OpenPOWER on IntegriCloud