From 08a00f0d1ce477c2c57072b9b0e27eb36a73092a Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Sun, 20 Nov 2022 00:15:03 +0200 Subject: llvm: use alignment of ABI return type when it differs from raw return type This would previously cause miscompilations when the ABI type had bigger alignment than the raw type. --- src/codegen/llvm.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/codegen') diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index afafda36a6..0da0ef18e2 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -4876,7 +4876,7 @@ pub const FuncGen = struct { // In this case the function return type is honoring the calling convention by having // a different LLVM type than the usual one. We solve this here at the callsite // by bitcasting a pointer to our canonical type, then loading it if necessary. - const alignment = return_type.abiAlignment(target); + const alignment = self.dg.object.target_data.abiAlignmentOfType(abi_ret_ty); const rp = self.buildAlloca(llvm_ret_ty, alignment); const ptr_abi_ty = abi_ret_ty.pointerType(0); const casted_ptr = self.builder.buildBitCast(rp, ptr_abi_ty, ""); -- cgit v1.2.3