[llvm-commits] [dragonegg] r115765 - /dragonegg/trunk/llvm-convert.cpp

Duncan Sands baldrick at free.fr
Wed Oct 6 00:22:19 PDT 2010


Author: baldrick
Date: Wed Oct  6 02:22:18 2010
New Revision: 115765

URL: http://llvm.org/viewvc/llvm-project?rev=115765&view=rev
Log:
Port commit 104753 (rafael) from llvm-gcc:
Set the calling convention when calling fabs.


Modified:
    dragonegg/trunk/llvm-convert.cpp

Modified: dragonegg/trunk/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/llvm-convert.cpp?rev=115765&r1=115764&r2=115765&view=diff
==============================================================================
--- dragonegg/trunk/llvm-convert.cpp (original)
+++ dragonegg/trunk/llvm-convert.cpp Wed Oct  6 02:22:18 2010
@@ -5992,20 +5992,37 @@
   // Turn FP abs into fabs/fabsf.
   const char *Name = 0;
 
+  tree ArgType;
   switch (Op->getType()->getTypeID()) {
   default: assert(0 && "Unknown FP type!");
-  case Type::FloatTyID:  Name = "fabsf"; break;
-  case Type::DoubleTyID: Name = "fabs"; break;
+  case Type::FloatTyID:
+    Name = "fabsf";
+    ArgType = float_type_node;
+    break;
+  case Type::DoubleTyID:
+    Name = "fabs";
+    ArgType = double_type_node;
+    break;
   case Type::X86_FP80TyID:
   case Type::PPC_FP128TyID:
-  case Type::FP128TyID: Name = "fabsl"; break;
+  case Type::FP128TyID:
+    Name = "fabsl";
+    ArgType = long_double_type_node;
+    break;
   }
 
   Value *V = TheModule->getOrInsertFunction(Name, Op->getType(), Op->getType(),
                                             NULL);
+  // Determine the calling convention.
+  CallingConv::ID CallingConvention = CallingConv::C;
+#ifdef TARGET_ADJUST_LLVM_CC
+  tree FunctionType = build_function_type_list(ArgType, ArgType, NULL);
+  TARGET_ADJUST_LLVM_CC(CallingConvention, FunctionType);
+#endif
   CallInst *Call = Builder.CreateCall(V, Op);
   Call->setDoesNotThrow();
   Call->setDoesNotAccessMemory();
+  Call->setCallingConv(CallingConvention);
   return Call;
 }
 





More information about the llvm-commits mailing list