[llvm-commits] CVS: llvm/lib/Transforms/Utils/CloneModule.cpp InlineFunction.cpp
Chris Lattner
lattner at cs.uiuc.edu
Sun May 8 18:04:51 PDT 2005
Changes in directory llvm/lib/Transforms/Utils:
CloneModule.cpp updated: 1.12 -> 1.13
InlineFunction.cpp updated: 1.33 -> 1.34
---
Log message:
wrap long lines, preserve calling conventions when cloning functions and
turning calls into invokes
---
Diffs of the changes: (+14 -6)
CloneModule.cpp | 19 +++++++++++++------
InlineFunction.cpp | 1 +
2 files changed, 14 insertions(+), 6 deletions(-)
Index: llvm/lib/Transforms/Utils/CloneModule.cpp
diff -u llvm/lib/Transforms/Utils/CloneModule.cpp:1.12 llvm/lib/Transforms/Utils/CloneModule.cpp:1.13
--- llvm/lib/Transforms/Utils/CloneModule.cpp:1.12 Thu Apr 21 18:45:34 2005
+++ llvm/lib/Transforms/Utils/CloneModule.cpp Sun May 8 20:04:34 2005
@@ -47,21 +47,27 @@
// 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 @@
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++;
}
Index: llvm/lib/Transforms/Utils/InlineFunction.cpp
diff -u llvm/lib/Transforms/Utils/InlineFunction.cpp:1.33 llvm/lib/Transforms/Utils/InlineFunction.cpp:1.34
--- llvm/lib/Transforms/Utils/InlineFunction.cpp:1.33 Fri May 6 12:13:16 2005
+++ llvm/lib/Transforms/Utils/InlineFunction.cpp Sun May 8 20:04:34 2005
@@ -153,6 +153,7 @@
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);
More information about the llvm-commits
mailing list