https://github.com/daxpedda created https://github.com/llvm/llvm-project/pull/173580
Vararg on Wasm64 was using 4 bytes for the pointer instead of 8 bytes. I checked the C ABI in the Wasm tool conventions just to make sure there isn't anything strange going on there, but there wasn't. Would still appreciate somebody double-checking this. >From eb7c600cc69ad67259282f106e49ab28d11f47f1 Mon Sep 17 00:00:00 2001 From: daxpedda <[email protected]> Date: Thu, 25 Dec 2025 22:44:33 +0100 Subject: [PATCH] [clang][WebAssembly] Fix Wasm Vararg pointer width --- clang/lib/CodeGen/Targets/WebAssembly.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/clang/lib/CodeGen/Targets/WebAssembly.cpp b/clang/lib/CodeGen/Targets/WebAssembly.cpp index ebe996a4edd8d..ce97884fa57c4 100644 --- a/clang/lib/CodeGen/Targets/WebAssembly.cpp +++ b/clang/lib/CodeGen/Targets/WebAssembly.cpp @@ -160,10 +160,11 @@ RValue WebAssemblyABIInfo::EmitVAArg(CodeGenFunction &CGF, Address VAListAddr, bool IsIndirect = isAggregateTypeForABI(Ty) && !isEmptyRecord(getContext(), Ty, true) && !isSingleElementStruct(Ty, getContext()); - return emitVoidPtrVAArg(CGF, VAListAddr, Ty, IsIndirect, - getContext().getTypeInfoInChars(Ty), - CharUnits::fromQuantity(4), - /*AllowHigherAlign=*/true, Slot); + return emitVoidPtrVAArg( + CGF, VAListAddr, Ty, IsIndirect, getContext().getTypeInfoInChars(Ty), + CharUnits::fromQuantity( + getContext().getTargetInfo().getTriple().isArch64Bit() ? 8 : 4), + /*AllowHigherAlign=*/true, Slot); } std::unique_ptr<TargetCodeGenInfo> _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
