diff options
author | Chris Lattner <sabre@nondot.org> | 2006-01-18 21:32:45 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-01-18 21:32:45 +0000 |
commit | b98282d2d6d673627dca89050e3d91222acd93cd (patch) | |
tree | 2bbf4966b3ea124d695d34a891160b946001e8ba /llvm/lib/Transforms/Utils/CloneModule.cpp | |
parent | ce5066c863aac41b91c0cfbd798c3e291e7fbe73 (diff) | |
download | bcm5719-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.cpp | 10 |
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. |