From e60b5028619be1c81bd039d63a0627dac32d38f9 Mon Sep 17 00:00:00 2001 From: Xin Tong Date: Sun, 1 Oct 2017 00:07:24 +0000 Subject: [PATCH] Fix typo [NFC] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314613 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/ConstantFolding.cpp | 9 ++++++--- test/CodeGen/X86/block-placement.ll | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/Analysis/ConstantFolding.cpp b/lib/Analysis/ConstantFolding.cpp index e88b8f14d54..ea673da6486 100644 --- a/lib/Analysis/ConstantFolding.cpp +++ b/lib/Analysis/ConstantFolding.cpp @@ -1435,7 +1435,7 @@ bool llvm::canConstantFoldCallTo(ImmutableCallSite CS, const Function *F) { return Name == "fabs" || Name == "floor" || Name == "fmod" || Name == "fabsf" || Name == "floorf" || Name == "fmodf"; case 'l': - return Name == "log" || Name == "log10" || Name == "logf" || + return Name == "log" || Name == "log10" || Name == "logf" || Name == "loll" || Name == "log10f"; case 'p': return Name == "pow" || Name == "powf"; @@ -1492,7 +1492,9 @@ Constant *GetConstantFoldFPValue(double V, Type *Ty) { return ConstantFP::get(Ty->getContext(), APFloat((float)V)); if (Ty->isDoubleTy()) return ConstantFP::get(Ty->getContext(), APFloat(V)); - llvm_unreachable("Can only constant fold half/float/double"); + if (Ty->isX86_FP80Ty()) + return ConstantFP::get(Ty->getContext(), APFloat(APFloat::x87DoubleExtended(), (long double)V)); + llvm_unreachable("Can only constant fold half/float/double/long double"); } /// Clear the floating-point exception state. @@ -1602,7 +1604,7 @@ Constant *ConstantFoldScalarCall(StringRef Name, unsigned IntrinsicID, Type *Ty, return ConstantInt::get(Ty->getContext(), Val.bitcastToAPInt()); } - if (!Ty->isHalfTy() && !Ty->isFloatTy() && !Ty->isDoubleTy()) + if (!Ty->isHalfTy() && !Ty->isFloatTy() && !Ty->isDoubleTy() && !Ty->isX86_FP80Ty()) return nullptr; if (IntrinsicID == Intrinsic::round) { @@ -1736,6 +1738,7 @@ Constant *ConstantFoldScalarCall(StringRef Name, unsigned IntrinsicID, Type *Ty, case 'l': if ((Name == "log" && V > 0 && TLI->has(LibFunc_log)) || (Name == "logf" && V > 0 && TLI->has(LibFunc_logf)) || + (Name == "logl" && V > 0 && TLI->has(LibFunc_logl)) || (Name == "__log_finite" && V > 0 && TLI->has(LibFunc_log_finite)) || (Name == "__logf_finite" && V > 0 && diff --git a/test/CodeGen/X86/block-placement.ll b/test/CodeGen/X86/block-placement.ll index b3f6534d14b..d4948892a31 100644 --- a/test/CodeGen/X86/block-placement.ll +++ b/test/CodeGen/X86/block-placement.ll @@ -943,7 +943,7 @@ define void @benchmark_heapsort(i32 %n, double* nocapture %ra) { ; 2) The exiting edge from the loop which is rotated to be laid out at the ; bottom of the loop needs to be exiting into the nearest enclosing loop (to ; which there is an exit). Otherwise, we force that enclosing loop into -; strange layouts that are siginificantly less efficient, often times maing +; strange layouts that are siginificantly less efficient, often times making ; it discontiguous. ; ; CHECK-LABEL: @benchmark_heapsort -- 2.40.0