[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