mirror of
https://github.com/ziglang/zig.git
synced 2026-01-21 06:45:24 +00:00
CBE: eliminate zig_void
C void is perfectly fine.
This commit is contained in:
parent
e6e459e9e3
commit
665eba93c1
@ -189,8 +189,6 @@
|
||||
|
||||
#define zig_bitSizeOf(T) (CHAR_BIT * sizeof(T))
|
||||
|
||||
typedef void zig_void;
|
||||
|
||||
#if defined(__cplusplus)
|
||||
typedef bool zig_bool;
|
||||
#define zig_false false
|
||||
|
||||
@ -1802,33 +1802,24 @@ pub const DeclGen = struct {
|
||||
const target = dg.module.getTarget();
|
||||
|
||||
switch (t.zigTypeTag()) {
|
||||
.NoReturn, .Void, .Bool, .Int, .Float, .ErrorSet => |tag| {
|
||||
const is_named = switch (tag) {
|
||||
.Int => t.isNamedInt(),
|
||||
.ErrorSet => false,
|
||||
else => true,
|
||||
};
|
||||
if (is_named) {
|
||||
.Void => {
|
||||
try w.writeAll("void");
|
||||
},
|
||||
.NoReturn, .Bool, .Float => {
|
||||
try w.writeAll("zig_");
|
||||
try t.print(w, dg.module);
|
||||
},
|
||||
.Int => {
|
||||
if (t.isNamedInt()) {
|
||||
try w.writeAll("zig_");
|
||||
try t.print(w, dg.module);
|
||||
} else {
|
||||
const int_info = t.intInfo(target);
|
||||
if (toCIntBits(int_info.bits)) |c_bits|
|
||||
return w.print("zig_{c}{d}", .{ signAbbrev(int_info.signedness), c_bits })
|
||||
else if (loweredArrayInfo(t, target)) |array_info| {
|
||||
assert(array_info.sentinel == null);
|
||||
var array_pl = Type.Payload.Array{
|
||||
.base = .{ .tag = .array },
|
||||
.data = .{ .len = array_info.len, .elem_type = array_info.elem_type },
|
||||
};
|
||||
const array_ty = Type.initPayload(&array_pl.base);
|
||||
|
||||
return dg.renderType(w, array_ty, kind);
|
||||
} else return dg.fail("C backend: Unable to lower unnamed integer type {}", .{
|
||||
t.fmt(dg.module),
|
||||
});
|
||||
return renderTypeUnnamed(dg, w, t, kind);
|
||||
}
|
||||
},
|
||||
.ErrorSet => {
|
||||
return renderTypeUnnamed(dg, w, t, kind);
|
||||
},
|
||||
.Pointer => {
|
||||
const ptr_info = t.ptrInfo().data;
|
||||
if (ptr_info.size == .Slice) {
|
||||
@ -2015,6 +2006,30 @@ pub const DeclGen = struct {
|
||||
}
|
||||
}
|
||||
|
||||
fn renderTypeUnnamed(
|
||||
dg: *DeclGen,
|
||||
w: anytype,
|
||||
t: Type,
|
||||
kind: TypedefKind,
|
||||
) error{ OutOfMemory, AnalysisFail }!void {
|
||||
const target = dg.module.getTarget();
|
||||
const int_info = t.intInfo(target);
|
||||
if (toCIntBits(int_info.bits)) |c_bits|
|
||||
return w.print("zig_{c}{d}", .{ signAbbrev(int_info.signedness), c_bits })
|
||||
else if (loweredArrayInfo(t, target)) |array_info| {
|
||||
assert(array_info.sentinel == null);
|
||||
var array_pl = Type.Payload.Array{
|
||||
.base = .{ .tag = .array },
|
||||
.data = .{ .len = array_info.len, .elem_type = array_info.elem_type },
|
||||
};
|
||||
const array_ty = Type.initPayload(&array_pl.base);
|
||||
|
||||
return dg.renderType(w, array_ty, kind);
|
||||
} else return dg.fail("C backend: Unable to lower unnamed integer type {}", .{
|
||||
t.fmt(dg.module),
|
||||
});
|
||||
}
|
||||
|
||||
/// Renders a type in C typecast format.
|
||||
///
|
||||
/// This is guaranteed to be valid in a typecast expression, but not
|
||||
|
||||
@ -951,7 +951,7 @@ pub fn addCases(ctx: *TestContext) !void {
|
||||
ctx.h("simple header", linux_x64,
|
||||
\\export fn start() void{}
|
||||
,
|
||||
\\zig_extern zig_void start(zig_void);
|
||||
\\zig_extern void start(void);
|
||||
\\
|
||||
);
|
||||
ctx.h("header with single param function", linux_x64,
|
||||
@ -959,7 +959,7 @@ pub fn addCases(ctx: *TestContext) !void {
|
||||
\\ _ = a;
|
||||
\\}
|
||||
,
|
||||
\\zig_extern zig_void start(zig_u8 const a0);
|
||||
\\zig_extern void start(zig_u8 const a0);
|
||||
\\
|
||||
);
|
||||
ctx.h("header with multiple param function", linux_x64,
|
||||
@ -967,25 +967,25 @@ pub fn addCases(ctx: *TestContext) !void {
|
||||
\\ _ = a; _ = b; _ = c;
|
||||
\\}
|
||||
,
|
||||
\\zig_extern zig_void start(zig_u8 const a0, zig_u8 const a1, zig_u8 const a2);
|
||||
\\zig_extern void start(zig_u8 const a0, zig_u8 const a1, zig_u8 const a2);
|
||||
\\
|
||||
);
|
||||
ctx.h("header with u32 param function", linux_x64,
|
||||
\\export fn start(a: u32) void{ _ = a; }
|
||||
,
|
||||
\\zig_extern zig_void start(zig_u32 const a0);
|
||||
\\zig_extern void start(zig_u32 const a0);
|
||||
\\
|
||||
);
|
||||
ctx.h("header with usize param function", linux_x64,
|
||||
\\export fn start(a: usize) void{ _ = a; }
|
||||
,
|
||||
\\zig_extern zig_void start(zig_usize const a0);
|
||||
\\zig_extern void start(zig_usize const a0);
|
||||
\\
|
||||
);
|
||||
ctx.h("header with bool param function", linux_x64,
|
||||
\\export fn start(a: bool) void{_ = a;}
|
||||
,
|
||||
\\zig_extern zig_void start(zig_bool const a0);
|
||||
\\zig_extern void start(zig_bool const a0);
|
||||
\\
|
||||
);
|
||||
ctx.h("header with noreturn function", linux_x64,
|
||||
@ -993,7 +993,7 @@ pub fn addCases(ctx: *TestContext) !void {
|
||||
\\ unreachable;
|
||||
\\}
|
||||
,
|
||||
\\zig_extern zig_noreturn start(zig_void);
|
||||
\\zig_extern zig_noreturn start(void);
|
||||
\\
|
||||
);
|
||||
ctx.h("header with multiple functions", linux_x64,
|
||||
@ -1001,15 +1001,15 @@ pub fn addCases(ctx: *TestContext) !void {
|
||||
\\export fn b() void{}
|
||||
\\export fn c() void{}
|
||||
,
|
||||
\\zig_extern zig_void a(zig_void);
|
||||
\\zig_extern zig_void b(zig_void);
|
||||
\\zig_extern zig_void c(zig_void);
|
||||
\\zig_extern void a(void);
|
||||
\\zig_extern void b(void);
|
||||
\\zig_extern void c(void);
|
||||
\\
|
||||
);
|
||||
ctx.h("header with multiple includes", linux_x64,
|
||||
\\export fn start(a: u32, b: usize) void{ _ = a; _ = b; }
|
||||
,
|
||||
\\zig_extern zig_void start(zig_u32 const a0, zig_usize const a1);
|
||||
\\zig_extern void start(zig_u32 const a0, zig_usize const a1);
|
||||
\\
|
||||
);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user