diff options
Diffstat (limited to 'llvm/lib/Analysis/ConstantFolding.cpp')
-rw-r--r-- | llvm/lib/Analysis/ConstantFolding.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ConstantFolding.cpp b/llvm/lib/Analysis/ConstantFolding.cpp index c5a2c2f..88db315 100644 --- a/llvm/lib/Analysis/ConstantFolding.cpp +++ b/llvm/lib/Analysis/ConstantFolding.cpp @@ -2407,6 +2407,9 @@ static Constant *ConstantFoldScalarCall1(StringRef Name, break; case LibFunc_log1p: case LibFunc_log1pf: + // Implement optional behavior from C's Annex F for +/-0.0. + if (U.isZero()) + return ConstantFP::get(Ty->getContext(), U); if (APF > APFloat::getOne(APF.getSemantics(), true) && TLI->has(Func)) return ConstantFoldFP(log1p, APF, Ty); break; |