| ... | ... | @@ -3705,17 +3705,22 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type { |
| 3705 | 3705 | for (param_types) |ty, i| { |
| 3706 | 3706 | switch (ty.zigTypeTag()) { |
| 3707 | 3707 | .Bool, .Int => { |
| 3708 | | const param_size = @intCast(u32, ty.abiSize(self.target.*)); |
| 3709 | | if (next_int_reg >= c_abi_int_param_regs.len) { |
| 3710 | | result.args[i] = .{ .stack_offset = next_stack_offset }; |
| 3711 | | next_stack_offset += param_size; |
| 3708 | if (!ty.hasCodeGenBits()) { |
| 3709 | assert(cc != .C); |
| 3710 | result.args[i] = .{ .none = {} }; |
| 3712 | 3711 | } else { |
| 3713 | | const aliased_reg = registerAlias( |
| 3714 | | c_abi_int_param_regs[next_int_reg], |
| 3715 | | param_size, |
| 3716 | | ); |
| 3717 | | result.args[i] = .{ .register = aliased_reg }; |
| 3718 | | next_int_reg += 1; |
| 3712 | const param_size = @intCast(u32, ty.abiSize(self.target.*)); |
| 3713 | if (next_int_reg >= c_abi_int_param_regs.len) { |
| 3714 | result.args[i] = .{ .stack_offset = next_stack_offset }; |
| 3715 | next_stack_offset += param_size; |
| 3716 | } else { |
| 3717 | const aliased_reg = registerAlias( |
| 3718 | c_abi_int_param_regs[next_int_reg], |
| 3719 | param_size, |
| 3720 | ); |
| 3721 | result.args[i] = .{ .register = aliased_reg }; |
| 3722 | next_int_reg += 1; |
| 3723 | } |
| 3719 | 3724 | } |
| 3720 | 3725 | }, |
| 3721 | 3726 | else => return self.fail(src, "TODO implement function parameters of type {s}", .{@tagName(ty.zigTypeTag())}), |