[clang] [compiler-rt] [llvm] [SPARC] Properly handle CC for long double on sparc32 (PR #162226)

via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 24 05:13:14 PST 2025


================
@@ -17,23 +17,25 @@
 def CC_Sparc32 : CallingConv<[
   // Custom assign SRet to [sp+64].
   CCIfSRet<CCCustom<"CC_Sparc_Assign_SRet">>,
+  // f128 arguments are passed indirectly, using i32 pointers.
+  CCIfType<[f128], CCPassIndirect<i32>>,
----------------
koachan wrote:

It stops matching, but at least looking at GCC behavior, in soft-float mode it also switches into an ABI in which all f128s are passed as if it's 2xi64s in the integer registers, which at the moment, LLVM doesn't do.
Should be fixable but I prefer to do it in another patch, so marking it as FIXME as you suggested.

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


More information about the llvm-commits mailing list