[llvm] [ConstantFolding] Fold expm1/expm1f with constant arguments (PR #196717)
via llvm-commits
llvm-commits at lists.llvm.org
Sat May 9 05:24:16 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-analysis
Author: YogeshFebyani
<details>
<summary>Changes</summary>
Added a fix for #<!-- -->123761
---
Full diff: https://github.com/llvm/llvm-project/pull/196717.diff
1 Files Affected:
- (modified) llvm/lib/Analysis/ConstantFolding.cpp (+10-1)
``````````diff
diff --git a/llvm/lib/Analysis/ConstantFolding.cpp b/llvm/lib/Analysis/ConstantFolding.cpp
index e035cd1bc1ac0..e3c0ef5584847 100644
--- a/llvm/lib/Analysis/ConstantFolding.cpp
+++ b/llvm/lib/Analysis/ConstantFolding.cpp
@@ -2126,7 +2126,8 @@ bool llvm::canConstantFoldCallTo(const CallBase *Call, const Function *F) {
Name == "cosh" || Name == "coshf";
case 'e':
return Name == "exp" || Name == "expf" || Name == "exp2" ||
- Name == "exp2f" || Name == "erf" || Name == "erff";
+ Name == "exp2f" || Name == "erf" || Name == "erff"
+ || Name == "expm1" || Name == "expm1f";
case 'f':
return Name == "fabs" || Name == "fabsf" ||
Name == "floor" || Name == "floorf" ||
@@ -3059,6 +3060,11 @@ static Constant *ConstantFoldScalarCall1(StringRef Name,
if (TLI->has(Func))
return ConstantFoldFP(exp, APF, Ty);
break;
+ case LibFunc_expm1:
+ case LibFunc_expm1f:
+ if (TLI->has(Func))
+ return ConstantFoldFP(expm1, APF, Ty);
+ break;
case LibFunc_exp2:
case LibFunc_exp2f:
case LibFunc_exp2_finite:
@@ -4789,6 +4795,9 @@ bool llvm::isMathLibCallNoop(const CallBase *Call,
if (OpC->getType()->isFloatTy())
return !(Op < APFloat(-149.0f) || Op > APFloat(127.0f));
break;
+ case LibFunc_expm1:
+ case LibFunc_expm1f:
+ return true;
case LibFunc_sinl:
case LibFunc_sin:
``````````
</details>
https://github.com/llvm/llvm-project/pull/196717
More information about the llvm-commits
mailing list