Handle fabsl.
llvm-svn: 42142
diff --git a/llvm-gcc-4.2/gcc/llvm-convert.cpp b/llvm-gcc-4.2/gcc/llvm-convert.cpp
index a682db5..cdd7c60 100644
--- a/llvm-gcc-4.2/gcc/llvm-convert.cpp
+++ b/llvm-gcc-4.2/gcc/llvm-convert.cpp
@@ -2734,7 +2734,7 @@
return Builder.CreateSelect(Cmp, Op, OpN, "abs");
} else {
// Turn FP abs into fabs/fabsf.
- return EmitBuiltinUnaryFPOp(Op, "fabsf", "fabs");
+ return EmitBuiltinUnaryFPOp(Op, "fabsf", "fabs", "fabsl");
}
}
@@ -3998,13 +3998,17 @@
}
Value *TreeToLLVM::EmitBuiltinUnaryFPOp(Value *Amt, const char *F32Name,
- const char *F64Name) {
+ const char *F64Name,
+ const char *LongDoubleName) {
const char *Name = 0;
switch (Amt->getType()->getTypeID()) {
default: assert(0 && "Unknown FP type!");
case Type::FloatTyID: Name = F32Name; break;
case Type::DoubleTyID: Name = F64Name; break;
+ case Type::X86_FP80TyID:
+ case Type::PPC_FP128TyID:
+ case Type::FP128TyID: Name = LongDoubleName; break;
}
return Builder.CreateCall(cast<Function>(
diff --git a/llvm-gcc-4.2/gcc/llvm-internal.h b/llvm-gcc-4.2/gcc/llvm-internal.h
index c770f66..af04e0a 100644
--- a/llvm-gcc-4.2/gcc/llvm-internal.h
+++ b/llvm-gcc-4.2/gcc/llvm-internal.h
@@ -502,7 +502,7 @@
Value *EmitBuiltinUnaryFPOp(Value *Amt, Intrinsic::ID F32ID,
Intrinsic::ID F64ID);
Value *EmitBuiltinUnaryFPOp(Value *InVal, const char *F32Name,
- const char *F64Name);
+ const char *F64Name, const char *LongDoubleName);
Value *EmitBuiltinPOWI(tree_node *exp);
bool EmitBuiltinConstantP(tree_node *exp, Value *&Result);