diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-05-09 01:04:34 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-05-09 01:04:34 +0000 | 
| commit | 21d1dde72a45e5539204d72c23fe7e0a128f7ce4 (patch) | |
| tree | d3de60a7075a4225550b0ce40415333ec07c6539 /llvm/lib/Transforms/Utils | |
| parent | bb0bfc470288152530aa9bcc55896939f6da3bb1 (diff) | |
| download | bcm5719-llvm-21d1dde72a45e5539204d72c23fe7e0a128f7ce4.tar.gz bcm5719-llvm-21d1dde72a45e5539204d72c23fe7e0a128f7ce4.zip  | |
wrap long lines, preserve calling conventions when cloning functions and
turning calls into invokes
llvm-svn: 21797
Diffstat (limited to 'llvm/lib/Transforms/Utils')
| -rw-r--r-- | llvm/lib/Transforms/Utils/CloneModule.cpp | 19 | ||||
| -rw-r--r-- | llvm/lib/Transforms/Utils/InlineFunction.cpp | 1 | 
2 files changed, 14 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Utils/CloneModule.cpp b/llvm/lib/Transforms/Utils/CloneModule.cpp index fd242870b20..133e7e3c721 100644 --- a/llvm/lib/Transforms/Utils/CloneModule.cpp +++ b/llvm/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++;        } diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp index 5ca9577c8c1..262b2d69467 100644 --- a/llvm/lib/Transforms/Utils/InlineFunction.cpp +++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp @@ -153,6 +153,7 @@ bool llvm::InlineFunction(CallSite CS) {                new InvokeInst(CI->getCalledValue(), Split, InvokeDest,                              std::vector<Value*>(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);  | 

