commit 5a971bbeeaa58e66e5a10243a9716aabac72bdd0 (tree)
parent d0277a3d17f738036a951a44f367839597dcaee4
Author: Daniele Cocca <jmc-88@users.noreply.github.com>
Date: Sun, 13 Mar 2022 20:36:15 +0000
Review suggestion: use hasRuntimeBitsIgnoreComptime()
This should cover not only integers, as done in
87744a7ea9a2449764a110da4210d7750e3938ee, but also void, enums with a
single field, etc...
Co-authored-by: Andrew Kelley <andrew@ziglang.org>
Diffstat:
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/codegen/c.zig b/src/codegen/c.zig
@@ -839,13 +839,11 @@ pub const DeclGen = struct {
try w.writeAll("(");
const param_len = dg.decl.ty.fnParamLen();
- const target = dg.module.getTarget();
var index: usize = 0;
var params_written: usize = 0;
while (index < param_len) : (index += 1) {
const param_type = dg.decl.ty.fnParamType(index);
- if (param_type.zigTypeTag() == .Void) continue;
- if (param_type.isInt() and param_type.intInfo(target).bits == 0) continue;
+ if (!param_type.hasRuntimeBitsIgnoreComptime()) continue;
if (params_written > 0) {
try w.writeAll(", ");
}
@@ -885,7 +883,7 @@ pub const DeclGen = struct {
var params_written: usize = 0;
var index: usize = 0;
while (index < param_len) : (index += 1) {
- if (fn_info.param_types[index].zigTypeTag() == .Void) continue;
+ if (!fn_info.param_types[index].hasRuntimeBitsIgnoreComptime()) continue;
if (params_written > 0) {
try bw.writeAll(", ");
}
@@ -2628,8 +2626,11 @@ fn airCall(
}
try writer.writeAll("(");
- for (args) |arg, i| {
- if (i != 0) {
+ var args_written: usize = 0;
+ for (args) |arg| {
+ const ty = f.air.typeOf(arg);
+ if (!ty.hasRuntimeBitsIgnoreComptime()) continue;
+ if (args_written != 0) {
try writer.writeAll(", ");
}
if (f.air.value(arg)) |val| {
@@ -2638,6 +2639,7 @@ fn airCall(
const val = try f.resolveInst(arg);
try f.writeCValue(writer, val);
}
+ args_written += 1;
}
try writer.writeAll(");\n");
return result_local;