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

via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 29 05:13:28 PDT 2025


================
@@ -1057,85 +1051,67 @@ define void @test_sincos_f128(ptr sret({ fp128, fp128 }) %ret, ptr %in) #0 {
 define void @test_sincos_v2f128(ptr sret({ <2 x fp128>, <2 x fp128> }) %ret, ptr %in) #0 {
 ; SPARC32-LABEL: test_sincos_v2f128:
 ; SPARC32:       ! %bb.0:
-; SPARC32-NEXT:    save %sp, -248, %sp
+; SPARC32-NEXT:    save %sp, -256, %sp
 ; SPARC32-NEXT:    mov %i0, %i1
 ; SPARC32-NEXT:    ld [%fp+64], %i0
-; SPARC32-NEXT:    ldd [%i1], %f0
+; SPARC32-NEXT:    ldd [%i1+16], %f0
 ; SPARC32-NEXT:    std %f0, [%fp+-80]
 ; SPARC32-NEXT:    std %f2, [%fp+-72] ! 16-byte Folded Spill
-; SPARC32-NEXT:    ldd [%i1+8], %f0
+; SPARC32-NEXT:    ldd [%i1+24], %f0
 ; SPARC32-NEXT:    std %f0, [%fp+-88] ! 8-byte Folded Spill
-; SPARC32-NEXT:    ldd [%i1+16], %f0
-; SPARC32-NEXT:    std %f0, [%fp+-120]
-; SPARC32-NEXT:    std %f2, [%fp+-112] ! 16-byte Folded Spill
-; SPARC32-NEXT:    ldd [%i1+24], %f4
-; SPARC32-NEXT:    std %f4, [%fp+-104] ! 8-byte Folded Spill
-; SPARC32-NEXT:    add %fp, -64, %i1
-; SPARC32-NEXT:    st %i1, [%sp+64]
-; SPARC32-NEXT:    std %f4, [%sp+100]
+; SPARC32-NEXT:    ldd [%i1], %f0
+; SPARC32-NEXT:    std %f0, [%fp+-152]
+; SPARC32-NEXT:    std %f2, [%fp+-144] ! 16-byte Folded Spill
+; SPARC32-NEXT:    ldd [%i1+8], %f4
+; SPARC32-NEXT:    std %f4, [%fp+-136] ! 8-byte Folded Spill
+; SPARC32-NEXT:    add %fp, -32, %i1
+; SPARC32-NEXT:    st %i1, [%sp+92]
+; SPARC32-NEXT:    std %f4, [%fp+-24]
 ; SPARC32-NEXT:    call sinl
----------------
koachan wrote:

So `sinl` here (along with `cosl` and friends) is a C function, so the call should follow C ABI rules (e.g. it needs to have a trailing `unimp`), but here as you can see it violates it.
Curiously, manually written calls in C seems to be lowered just fine by LLVM, the wrong lowering only happens when LLVM inserts its own calls automatically. What should I do with it?

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


More information about the cfe-commits mailing list