From c154cef9a1e7db1afd42e4b227571debe7a986f5 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 9 May 2005 01:04:34 +0000 Subject: [PATCH] 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 --- lib/Transforms/Utils/CloneModule.cpp | 19 +++++++++++++------ lib/Transforms/Utils/InlineFunction.cpp | 1 + 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/Transforms/Utils/CloneModule.cpp b/lib/Transforms/Utils/CloneModule.cpp index fd242870b20..133e7e3c721 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(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(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(ValueMap[I]); if (I->hasInitializer()) GV->setInitializer(cast(MapValue(I->getInitializer(), @@ -75,7 +81,8 @@ Module *llvm::CloneModule(const Module *M) { Function *F = cast(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++; } diff --git a/lib/Transforms/Utils/InlineFunction.cpp b/lib/Transforms/Utils/InlineFunction.cpp index 5ca9577c8c1..262b2d69467 100644 --- a/lib/Transforms/Utils/InlineFunction.cpp +++ b/lib/Transforms/Utils/InlineFunction.cpp @@ -153,6 +153,7 @@ bool llvm::InlineFunction(CallSite CS) { new InvokeInst(CI->getCalledValue(), Split, InvokeDest, std::vector(CI->op_begin()+1, CI->op_end()), CI->getName(), BB->getTerminator()); + II->setCallingConv(CI->getCallingConv()); // Make sure that anything using the call now uses the invoke! CI->replaceAllUsesWith(II); -- 2.34.1