[llvm] [SimplifyLibCalls] Combine sin/cos libcall pairs into llvm.sincos (PR #184760)

via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 5 01:35:22 PST 2026


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff origin/main HEAD --extensions h,cpp -- llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp --diff_from_common_commit
``````````

:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h b/llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h
index 14da88a66..e174a1c48 100644
--- a/llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h
+++ b/llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h
@@ -249,8 +249,7 @@ private:
   void classifyArgUse(Value *Val, Function *F, bool IsFloat,
                       SmallVectorImpl<CallInst *> &SinCalls,
                       SmallVectorImpl<CallInst *> &CosCalls,
-                      SmallVectorImpl<CallInst *> &SinCosCalls,
-                      bool IsPi);
+                      SmallVectorImpl<CallInst *> &SinCosCalls, bool IsPi);
   Value *optimizePrintFString(CallInst *CI, IRBuilderBase &B);
   Value *optimizeSPrintFString(CallInst *CI, IRBuilderBase &B);
   Value *optimizeSnPrintFString(CallInst *CI, IRBuilderBase &B);
diff --git a/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp b/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
index 4ce540c43..155a037c9 100644
--- a/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
@@ -3053,7 +3053,7 @@ Value *LibCallSimplifier::optimizeSymmetric(CallInst *CI, LibFunc Func,
 }
 
 Value *LibCallSimplifier::optimizeSinCosPi(CallInst *CI, bool IsSin,
-                                            IRBuilderBase &B) {
+                                           IRBuilderBase &B) {
   return optimizeSinCos(CI, IsSin, B, /*IsPi=*/true);
 }
 
@@ -3123,11 +3123,11 @@ Value *LibCallSimplifier::optimizeSinCos(CallInst *CI, bool IsSin,
   return IsSin ? Sin : Cos;
 }
 
-void LibCallSimplifier::classifyArgUse(
-    Value *Val, Function *F, bool IsFloat,
-    SmallVectorImpl<CallInst *> &SinCalls,
-    SmallVectorImpl<CallInst *> &CosCalls,
-    SmallVectorImpl<CallInst *> &SinCosCalls, bool IsPi) {
+void LibCallSimplifier::classifyArgUse(Value *Val, Function *F, bool IsFloat,
+                                       SmallVectorImpl<CallInst *> &SinCalls,
+                                       SmallVectorImpl<CallInst *> &CosCalls,
+                                       SmallVectorImpl<CallInst *> &SinCosCalls,
+                                       bool IsPi) {
   auto *CI = dyn_cast<CallInst>(Val);
   if (!CI || CI->use_empty())
     return;
@@ -3161,8 +3161,7 @@ void LibCallSimplifier::classifyArgUse(
         SinCosCalls.push_back(CI);
     }
   } else {
-    if (Func == LibFunc_sin || Func == LibFunc_sinf ||
-        Func == LibFunc_sinl)
+    if (Func == LibFunc_sin || Func == LibFunc_sinf || Func == LibFunc_sinl)
       SinCalls.push_back(CI);
     else if (Func == LibFunc_cos || Func == LibFunc_cosf ||
              Func == LibFunc_cosl)
@@ -4067,10 +4066,10 @@ Value *LibCallSimplifier::optimizeFloatingPointLibCall(CallInst *CI,
     return optimizeSinCosPi(CI, /*IsSin*/false, Builder);
   case LibFunc_sinf:
   case LibFunc_sinl:
-    return optimizeSinCos(CI, /*IsSin*/true, Builder);
+    return optimizeSinCos(CI, /*IsSin*/ true, Builder);
   case LibFunc_cosf:
   case LibFunc_cosl:
-    return optimizeSinCos(CI, /*IsSin*/false, Builder);
+    return optimizeSinCos(CI, /*IsSin*/ false, Builder);
   case LibFunc_powf:
   case LibFunc_pow:
   case LibFunc_powl:
@@ -4149,7 +4148,8 @@ Value *LibCallSimplifier::optimizeFloatingPointLibCall(CallInst *CI,
   case LibFunc_cos:
     if (Value *V = optimizeSinCos(CI, Func == LibFunc_sin, Builder))
       return V;
-    if (UnsafeFPShrink && hasFloatVersion(M, CI->getCalledFunction()->getName()))
+    if (UnsafeFPShrink &&
+        hasFloatVersion(M, CI->getCalledFunction()->getName()))
       return optimizeUnaryDoubleFP(CI, Builder, TLI, true);
     return nullptr;
   case LibFunc_tanh:

``````````

</details>


https://github.com/llvm/llvm-project/pull/184760


More information about the llvm-commits mailing list