aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ConstantFolding.cpp
diff options
context:
space:
mode:
authorXin Tong <trent.xin.tong@gmail.com>2017-10-01 00:07:24 +0000
committerXin Tong <trent.xin.tong@gmail.com>2017-10-01 00:07:24 +0000
commitefec219e1bd65df0e885c860fed88b8eb0d4cca5 (patch)
tree7277e3aab1e0430638ddb075a206a1d2873c2a18 /llvm/lib/Analysis/ConstantFolding.cpp
parentd36c27bedbc79f03d01fea5fdc8b5df4973c6c3d (diff)
downloadllvm-efec219e1bd65df0e885c860fed88b8eb0d4cca5.zip
llvm-efec219e1bd65df0e885c860fed88b8eb0d4cca5.tar.gz
llvm-efec219e1bd65df0e885c860fed88b8eb0d4cca5.tar.bz2
Fix typo [NFC]
llvm-svn: 314613
Diffstat (limited to 'llvm/lib/Analysis/ConstantFolding.cpp')
-rw-r--r--llvm/lib/Analysis/ConstantFolding.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/ConstantFolding.cpp b/llvm/lib/Analysis/ConstantFolding.cpp
index e88b8f1..ea673da6 100644
--- a/llvm/lib/Analysis/ConstantFolding.cpp
+++ b/llvm/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 &&