zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 4a462481982e96e1f94e2dd431aeaf8686c0c4b1 (tree)
parent a124b027b45384e595c6967adabe8b5033b9c410
Author: Noam Preil <pleasantatk@gmail.com>
Date:   Mon, 13 Jul 2020 01:12:49 -0400

CBE: Only generate `(void)` for calls whose return values are ignored

Diffstat:
Msrc-self-hosted/cgen.zig | 8++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src-self-hosted/cgen.zig b/src-self-hosted/cgen.zig @@ -120,13 +120,13 @@ pub fn generate(file: *C, decl: *Decl) !void { try writer.writeAll(");"); }, .call => { - const call = inst.cast(ir.Inst.Call).?.args; - if (call.func.cast(ir.Inst.Constant)) |func_inst| { + const call = inst.cast(ir.Inst.Call).?; + if (call.args.func.cast(ir.Inst.Constant)) |func_inst| { if (func_inst.val.cast(Value.Payload.Function)) |func_val| { const target = func_val.func.owner_decl; const target_ty = target.typed_value.most_recent.typed_value.ty; const ret_ty = target_ty.fnReturnType().tag(); - if (target_ty.fnReturnType().hasCodeGenBits()) { + if (target_ty.fnReturnType().hasCodeGenBits() and call.base.isUnused()) { try writer.print("(void)", .{}); } const tname = mem.spanZ(target.name); @@ -139,7 +139,7 @@ pub fn generate(file: *C, decl: *Decl) !void { } else { return file.fail(decl.src(), "TODO non-function call target?", .{}); } - if (call.args.len != 0) { + if (call.args.args.len != 0) { return file.fail(decl.src(), "TODO function arguments", .{}); } } else {