wrap long lines, preserve calling conventions when cloning functions and
authorChris Lattner <sabre@nondot.org>
Mon, 9 May 2005 01:04:34 +0000 (01:04 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 9 May 2005 01:04:34 +0000 (01:04 +0000)
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
lib/Transforms/Utils/InlineFunction.cpp

index fd242870b20d9623fc3c20bafcc880369cd0eb31..133e7e3c721d2d5d37e55d4c83b818f1348e2263 100644 (file)
@@ -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++;
       }
index 5ca9577c8c1f3ab74bbdceb3e37d7c59d46428eb..262b2d69467c99e810ed0e452191cacc5a639ad3 100644 (file)
@@ -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);