[llvm-commits] [llvm-gcc-4.2] r104753 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
Rafael Espindola
rafael.espindola at gmail.com
Wed May 26 15:05:04 PDT 2010
Author: rafael
Date: Wed May 26 17:05:04 2010
New Revision: 104753
URL: http://llvm.org/viewvc/llvm-project?rev=104753&view=rev
Log:
Set the calling convention when calling fabs.
Modified:
llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=104753&r1=104752&r2=104753&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Wed May 26 17:05:04 2010
@@ -3550,20 +3550,38 @@
// 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