efriedma added a comment. SparcTargetLowering::LowerCall_32 is Sparc-specific code. Maybe you can take a look at where it's crashing, and ask some more specific question?
The compiler-rt requirement for __uint128_t is a bit inconvenient, I guess; maybe it could be changed, but that's probably an invasive patch. Please split the compiler-rt changes into a separate patch; whether compiler-rt provides long double routines is separate from whether the compiler can generate calls to them. (For example, you might use clang and link against libgcc.) ================ Comment at: llvm/lib/Target/Sparc/SparcCallingConv.td:30 // Alternatively, they are assigned to the stack in 4-byte aligned units. CCAssignToStack<4, 4> ]>; ---------------- Maybe worth adding code to use CCPassIndirect for f128? Might allow you to simplify the clang handling. ================ Comment at: llvm/lib/Target/Sparc/SparcCallingConv.td:38 + CCIfInReg<CCIfType<[f128] , CCAssignToReg<[Q0, Q1]>>>, + CCIfType<[f128], CCAssignToStack<16, 8>>, CCIfType<[v2i32], CCCustom<"CC_Sparc_Assign_Ret_Split_64">> ---------------- CCAssignToStack is used to pass values directly on the stack; I have no idea what it would mean on a return value. Are you sure you don't want to just fall back to the default handling, which returns the value indirectly? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D89130/new/ https://reviews.llvm.org/D89130 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits