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...@@ -26,15 +26,19 @@ fn renderType(ctx: *Context, header: *C.Header, writer: std.ArrayList(u8).Writer
26 try writer.writeAll("zig_noreturn void");26 try writer.writeAll("zig_noreturn void");
27 },27 },
28 .Void => try writer.writeAll("void"),28 .Void => try writer.writeAll("void"),
29 .Bool => try writer.writeAll("bool"),
29 .Int => {30 .Int => {
30 if (T.tag() == .u8) {31 if (T.tag() == .u8) {
31 header.need_stdint = true;32 header.need_stdint = true;
32 try writer.writeAll("uint8_t");33 try writer.writeAll("uint8_t");
34 } else if (T.tag() == .u32) {
35 header.need_stdint = true;
36 try writer.writeAll("uint32_t");
33 } else if (T.tag() == .usize) {37 } else if (T.tag() == .usize) {
34 header.need_stddef = true;38 header.need_stddef = true;
35 try writer.writeAll("size_t");39 try writer.writeAll("size_t");
36 } else {40 } else {
37 return ctx.fail(ctx.decl.src(), "TODO implement int types", .{});41 return ctx.fail(ctx.decl.src(), "TODO implement int type {}", .{T});
38 }42 }
39 },43 },
40 else => |e| return ctx.fail(ctx.decl.src(), "TODO implement type {}", .{e}),44 else => |e| return ctx.fail(ctx.decl.src(), "TODO implement type {}", .{e}),
src/link/cbe.h+9
...@@ -1,3 +1,12 @@...@@ -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
1#if __STDC_VERSION__ >= 201112L10#if __STDC_VERSION__ >= 201112L
2#define zig_noreturn _Noreturn11#define zig_noreturn _Noreturn
3#elif __GNUC__12#elif __GNUC__