authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-05-04 21:10:03-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-05-04 21:11:55-07:00
log17fc44dd1287163c25832c40f7e81cd5532e52bd
treef8180f0b709c32a94a5f84d80d972f1085f15eaf
parent1b432b557608bd047afaad71ffb7bd2ddf23c444

LLVM: fix x86_64 sysv C ABI for extern structs with sub-64 bit integers


1 files changed, 4 insertions(+), 2 deletions(-)

src/codegen/llvm.zig+4-2
...@@ -8030,7 +8030,8 @@ fn lowerFnRetTy(dg: *DeclGen, fn_info: Type.Payload.Function.Data) !*const llvm....@@ -8030,7 +8030,8 @@ fn lowerFnRetTy(dg: *DeclGen, fn_info: Type.Payload.Function.Data) !*const llvm.
8030 }8030 }
8031 }8031 }
8032 if (classes[0] == .integer and classes[1] == .none) {8032 if (classes[0] == .integer and classes[1] == .none) {
8033 return llvm_types_buffer[0];8033 const abi_size = fn_info.return_type.abiSize(target);
8034 return dg.context.intType(@intCast(c_uint, abi_size * 8));
8034 }8035 }
8035 return dg.context.structType(&llvm_types_buffer, llvm_types_index, .False);8036 return dg.context.structType(&llvm_types_buffer, llvm_types_index, .False);
8036 },8037 },
...@@ -8124,7 +8125,8 @@ fn lowerFnParamTy(dg: *DeclGen, cc: std.builtin.CallingConvention, ty: Type) !*c...@@ -8124,7 +8125,8 @@ fn lowerFnParamTy(dg: *DeclGen, cc: std.builtin.CallingConvention, ty: Type) !*c
8124 }8125 }
8125 }8126 }
8126 if (classes[0] == .integer and classes[1] == .none) {8127 if (classes[0] == .integer and classes[1] == .none) {
8127 return llvm_types_buffer[0];8128 const abi_size = ty.abiSize(target);
8129 return dg.context.intType(@intCast(c_uint, abi_size * 8));
8128 }8130 }
8129 return dg.context.structType(&llvm_types_buffer, llvm_types_index, .False);8131 return dg.context.structType(&llvm_types_buffer, llvm_types_index, .False);
8130 },8132 },