[clang] [llvm] [clang][SPARC] Pass 16-aligned 16-byte structs as i128 in CC (PR #155829)
Eli Friedman via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 3 15:52:29 PDT 2025
================
@@ -275,10 +276,14 @@ SparcV9ABIInfo::classifyType(QualType Ty, unsigned SizeLimit) const {
// Try to use the original type for coercion.
llvm::Type *CoerceTy = CB.isUsableType(StrTy) ? StrTy : CB.getType();
+ // We use a pair of i64 for 9-16 byte aggregate with 8 byte alignment.
+ // For 9-16 byte aggregates with 16 byte alignment, we use i128.
+ llvm::Type *WideTy = llvm::Type::getIntNTy(getVMContext(), 128);
+ bool UseI128 = (Size > 64) && (Size <= 128) && (Alignment == 128);
----------------
efriedma-quic wrote:
Please also add coverage for a "medium" struct with 128-bit alignment.
https://github.com/llvm/llvm-project/pull/155829
More information about the cfe-commits
mailing list