aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Transforms/Utils/CloneModule.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-05-09 01:04:34 +0000
committerChris Lattner <sabre@nondot.org>2005-05-09 01:04:34 +0000
commitc154cef9a1e7db1afd42e4b227571debe7a986f5 (patch)
treed3735422ddaa47198bee0763dfc0420cc609cd20 /lib/Transforms/Utils/CloneModule.cpp
parent42e3c81c5f23c42ba2415a8f797d430dad387734 (diff)
downloadexternal_llvm-c154cef9a1e7db1afd42e4b227571debe7a986f5.zip
external_llvm-c154cef9a1e7db1afd42e4b227571debe7a986f5.tar.gz
external_llvm-c154cef9a1e7db1afd42e4b227571debe7a986f5.tar.bz2
wrap long lines, preserve calling conventions when cloning functions and
turning calls into invokes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21797 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/CloneModule.cpp')
-rw-r--r--lib/Transforms/Utils/CloneModule.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/Transforms/Utils/CloneModule.cpp b/lib/Transforms/Utils/CloneModule.cpp
index fd24287..133e7e3 100644
--- a/lib/Transforms/Utils/CloneModule.cpp
+++ b/lib/Transforms/Utils/CloneModule.cpp
@@ -47,21 +47,27 @@ Module *llvm::CloneModule(const Module *M) {
// new module. Here we add them to the ValueMap and to the new Module. We
// don't worry about attributes or initializers, they will come later.
//
- for (Module::const_global_iterator I = M->global_begin(), E = M->global_end(); I != E; ++I)
+ for (Module::const_global_iterator I = M->global_begin(), E = M->global_end();
+ I != E; ++I)
ValueMap[I] = new GlobalVariable(I->getType()->getElementType(), false,
GlobalValue::ExternalLinkage, 0,
I->getName(), New);
// Loop over the functions in the module, making external functions as before
- for (Module::const_iterator I = M->begin(), E = M->end(); I != E; ++I)
- ValueMap[I]=new Function(cast<FunctionType>(I->getType()->getElementType()),
- GlobalValue::ExternalLinkage, I->getName(), New);
+ for (Module::const_iterator I = M->begin(), E = M->end(); I != E; ++I) {
+ Function *NF =
+ new Function(cast<FunctionType>(I->getType()->getElementType()),
+ GlobalValue::ExternalLinkage, I->getName(), New);
+ NF->setCallingConv(I->getCallingConv());
+ ValueMap[I]= NF;
+ }
// Now that all of the things that global variable initializer can refer to
// have been created, loop through and copy the global variable referrers
// over... We also set the attributes on the global now.
//
- for (Module::const_global_iterator I = M->global_begin(), E = M->global_end(); I != E; ++I) {
+ for (Module::const_global_iterator I = M->global_begin(), E = M->global_end();
+ I != E; ++I) {
GlobalVariable *GV = cast<GlobalVariable>(ValueMap[I]);
if (I->hasInitializer())
GV->setInitializer(cast<Constant>(MapValue(I->getInitializer(),
@@ -75,7 +81,8 @@ Module *llvm::CloneModule(const Module *M) {
Function *F = cast<Function>(ValueMap[I]);
if (!I->isExternal()) {
Function::arg_iterator DestI = F->arg_begin();
- for (Function::const_arg_iterator J = I->arg_begin(); J != I->arg_end(); ++J) {
+ for (Function::const_arg_iterator J = I->arg_begin(); J != I->arg_end();
+ ++J) {
DestI->setName(J->getName());
ValueMap[J] = DestI++;
}