summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/CloneModule.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-01-18 21:32:45 +0000
committerChris Lattner <sabre@nondot.org>2006-01-18 21:32:45 +0000
commitb98282d2d6d673627dca89050e3d91222acd93cd (patch)
tree2bbf4966b3ea124d695d34a891160b946001e8ba /llvm/lib/Transforms/Utils/CloneModule.cpp
parentce5066c863aac41b91c0cfbd798c3e291e7fbe73 (diff)
downloadbcm5719-llvm-b98282d2d6d673627dca89050e3d91222acd93cd.tar.gz
bcm5719-llvm-b98282d2d6d673627dca89050e3d91222acd93cd.zip
Make sure that cloning a module clones its target triple and dependent
library list as well. This should help bugpoint. llvm-svn: 25424
Diffstat (limited to 'llvm/lib/Transforms/Utils/CloneModule.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/CloneModule.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Utils/CloneModule.cpp b/llvm/lib/Transforms/Utils/CloneModule.cpp
index 309b280cc02..324e00aaa8c 100644
--- a/llvm/lib/Transforms/Utils/CloneModule.cpp
+++ b/llvm/lib/Transforms/Utils/CloneModule.cpp
@@ -30,14 +30,18 @@ Module *llvm::CloneModule(const Module *M) {
Module *New = new Module(M->getModuleIdentifier());
New->setEndianness(M->getEndianness());
New->setPointerSize(M->getPointerSize());
+ New->setTargetTriple(M->getTargetTriple());
- // Copy all of the type symbol table entries over...
+ // Copy all of the type symbol table entries over.
const SymbolTable &SymTab = M->getSymbolTable();
SymbolTable::type_const_iterator TypeI = SymTab.type_begin();
SymbolTable::type_const_iterator TypeE = SymTab.type_end();
- for ( ; TypeI != TypeE; ++TypeI ) {
+ for (; TypeI != TypeE; ++TypeI)
New->addTypeName(TypeI->first, TypeI->second);
- }
+
+ // Copy all of the dependent libraries over.
+ for (Module::lib_iterator I = M->lib_begin(), E = M->lib_end(); I != E; ++I)
+ New->addLibrary(*I);
// Create the value map that maps things from the old module over to the new
// module.
OpenPOWER on IntegriCloud