mirror of
https://github.com/ziglang/zig.git
synced 2024-11-30 09:02:32 +00:00
stage2: LLVM backend: fix var args function calls
This commit is contained in:
parent
6d6cf59847
commit
5af7ae1dc4
@ -264,10 +264,10 @@ pub const Inst = struct {
|
||||
/// Uses the `un_op` field.
|
||||
/// Triggers `resolveTypeLayout` on the return type.
|
||||
ret,
|
||||
/// This instruction communicates that the function's result value is inside
|
||||
/// the operand, which is a pointer. If the function will pass the result by-ref,
|
||||
/// the pointer operand is a `ret_ptr` instruction. Otherwise, this instruction
|
||||
/// is equivalent to a `load` on the operand, followed by a `ret` on the loaded value.
|
||||
/// This instruction communicates that the function's result value is pointed to by
|
||||
/// the operand. If the function will pass the result by-ref, the operand is a
|
||||
/// `ret_ptr` instruction. Otherwise, this instruction is equivalent to a `load`
|
||||
/// on the operand, followed by a `ret` on the loaded value.
|
||||
/// Result type is always noreturn; no instructions in a block follow this one.
|
||||
/// Uses the `un_op` field.
|
||||
/// Triggers `resolveTypeLayout` on the return type.
|
||||
|
@ -1490,11 +1490,17 @@ pub const FuncGen = struct {
|
||||
break :blk ret_ptr;
|
||||
};
|
||||
|
||||
for (args) |arg, i| {
|
||||
const param_ty = fn_info.param_types[i];
|
||||
if (!param_ty.hasCodeGenBits()) continue;
|
||||
if (fn_info.is_var_args) {
|
||||
for (args) |arg| {
|
||||
try llvm_args.append(try self.resolveInst(arg));
|
||||
}
|
||||
} else {
|
||||
for (args) |arg, i| {
|
||||
const param_ty = fn_info.param_types[i];
|
||||
if (!param_ty.hasCodeGenBits()) continue;
|
||||
|
||||
try llvm_args.append(try self.resolveInst(arg));
|
||||
try llvm_args.append(try self.resolveInst(arg));
|
||||
}
|
||||
}
|
||||
|
||||
const call = self.builder.buildCall(
|
||||
|
Loading…
Reference in New Issue
Block a user