authorgravatar for noam@pixelhero.devNoam Preil <noam@pixelhero.dev> 2020-11-18 20:50:51-05:00
committergravatar for ascottcameron@gmail.comAlex Cameron <ascottcameron@gmail.com> 2020-12-23 01:14:35+11:00
log37438dd78975cf4ce46afaf4ba8c31d268d480bc
tree982a2cea0d925cdf8512690f28b808e9322fb087
parent15a148db01896d8ef7290593755d185292584510

CBE: add support for bool,u32


2 files changed, 14 insertions(+), 1 deletions(-)

src/codegen/c.zig+5-1
......@@ -26,15 +26,19 @@ fn renderType(ctx: *Context, header: *C.Header, writer: std.ArrayList(u8).Writer
2626 try writer.writeAll("zig_noreturn void");
2727 },
2828 .Void => try writer.writeAll("void"),
29 .Bool => try writer.writeAll("bool"),
2930 .Int => {
3031 if (T.tag() == .u8) {
3132 header.need_stdint = true;
3233 try writer.writeAll("uint8_t");
34 } else if (T.tag() == .u32) {
35 header.need_stdint = true;
36 try writer.writeAll("uint32_t");
3337 } else if (T.tag() == .usize) {
3438 header.need_stddef = true;
3539 try writer.writeAll("size_t");
3640 } else {
37 return ctx.fail(ctx.decl.src(), "TODO implement int types", .{});
41 return ctx.fail(ctx.decl.src(), "TODO implement int type {}", .{T});
3842 }
3943 },
4044 else => |e| return ctx.fail(ctx.decl.src(), "TODO implement type {}", .{e}),
src/link/cbe.h+9
......@@ -1,3 +1,12 @@
1#if __STDC_VERSION__ >= 199901L
2// C99 or newer
3#include <stdbool.h>
4#else
5#define bool unsigned char
6#define true 1
7#define false 0
8#endif
9
110#if __STDC_VERSION__ >= 201112L
211#define zig_noreturn _Noreturn
312#elif __GNUC__