diff options
| author | Cody Tapscott <topolarity@tapscott.me> | 2022-09-27 19:57:43 -0700 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-09-28 12:48:28 +0300 |
| commit | e165b8b223bfaaeb5953dec9a1f03b8e0ce4ddab (patch) | |
| tree | 67af3c2ea71a7b50d283009ed92f0d08223e221d /src/codegen/llvm.zig | |
| parent | f3a1b5c481646ee35813cbe8bb2b0a3979df3ab8 (diff) | |
| download | zig-e165b8b223bfaaeb5953dec9a1f03b8e0ce4ddab.tar.gz zig-e165b8b223bfaaeb5953dec9a1f03b8e0ce4ddab.zip | |
stage2: Fix multiple_llvm_int parameter passing
Small iteration oopsie
We could really use some more comprehensive C ABI tests.
Diffstat (limited to 'src/codegen/llvm.zig')
| -rw-r--r-- | src/codegen/llvm.zig | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 2f66c56823..1b793265da 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -1035,10 +1035,11 @@ pub const Object = struct { } const ints_llvm_ty = dg.context.structType(field_types.ptr, @intCast(c_uint, field_types.len), .False); const casted_ptr = builder.buildBitCast(arg_ptr, ints_llvm_ty.pointerType(0), ""); - for (llvm_ints) |_, i_usize| { - const i = @intCast(c_uint, i_usize); - const param = llvm_func.getParam(i); - const field_ptr = builder.buildStructGEP(ints_llvm_ty, casted_ptr, i, ""); + for (llvm_ints) |_, field_i_usize| { + const field_i = @intCast(c_uint, field_i_usize); + const param = llvm_func.getParam(llvm_arg_i); + llvm_arg_i += 1; + const field_ptr = builder.buildStructGEP(ints_llvm_ty, casted_ptr, field_i, ""); const store_inst = builder.buildStore(param, field_ptr); store_inst.setAlignment(target.cpu.arch.ptrBitWidth() / 8); } @@ -1070,10 +1071,11 @@ pub const Object = struct { } const floats_llvm_ty = dg.context.structType(field_types.ptr, @intCast(c_uint, field_types.len), .False); const casted_ptr = builder.buildBitCast(arg_ptr, floats_llvm_ty.pointerType(0), ""); - for (llvm_floats) |_, i_usize| { - const i = @intCast(c_uint, i_usize); - const param = llvm_func.getParam(i); - const field_ptr = builder.buildStructGEP(floats_llvm_ty, casted_ptr, i, ""); + for (llvm_floats) |_, field_i_usize| { + const field_i = @intCast(c_uint, field_i_usize); + const param = llvm_func.getParam(llvm_arg_i); + llvm_arg_i += 1; + const field_ptr = builder.buildStructGEP(floats_llvm_ty, casted_ptr, field_i, ""); const store_inst = builder.buildStore(param, field_ptr); store_inst.setAlignment(target.cpu.arch.ptrBitWidth() / 8); } |
