aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/c.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-12-21 11:28:40 -0800
committerGitHub <noreply@github.com>2021-12-21 11:28:40 -0800
commit8df540aeef33b9b02e98aebe311299c101ce44b9 (patch)
tree95e6f1de6f6225ebb2e254ec9421240ec52af338 /src/codegen/c.zig
parent7e16bb36d82cf45cd5f6f4da38fba512554f66ed (diff)
parente106e18d96595bdc4bc037e0b36900992a576160 (diff)
downloadzig-8df540aeef33b9b02e98aebe311299c101ce44b9.tar.gz
zig-8df540aeef33b9b02e98aebe311299c101ce44b9.zip
Merge pull request #10370 from Snektron/stage2-inferred-error-sets-2
stage2: Make page_allocator work
Diffstat (limited to 'src/codegen/c.zig')
-rw-r--r--src/codegen/c.zig34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig
index f54ae7f76d..12ce813a0f 100644
--- a/src/codegen/c.zig
+++ b/src/codegen/c.zig
@@ -1125,6 +1125,7 @@ fn genBody(f: *Function, body: []const Air.Inst.Index) error{ AnalysisFail, OutO
.arg => airArg(f),
.breakpoint => try airBreakpoint(f),
+ .ret_addr => try airRetAddr(f),
.unreach => try airUnreach(f),
.fence => try airFence(f, inst),
@@ -1155,6 +1156,11 @@ fn genBody(f: *Function, body: []const Air.Inst.Index) error{ AnalysisFail, OutO
.mul_sat => try airSatOp(f, inst, "muls_"),
.shl_sat => try airSatOp(f, inst, "shls_"),
+ .add_with_overflow => try airAddWithOverflow(f, inst),
+ .sub_with_overflow => try airSubWithOverflow(f, inst),
+ .mul_with_overflow => try airMulWithOverflow(f, inst),
+ .shl_with_overflow => try airShlWithOverflow(f, inst),
+
.min => try airMinMax(f, inst, "<"),
.max => try airMinMax(f, inst, ">"),
@@ -1864,6 +1870,30 @@ fn airSatOp(f: *Function, inst: Air.Inst.Index, fn_op: [*:0]const u8) !CValue {
return ret;
}
+fn airAddWithOverflow(f: *Function, inst: Air.Inst.Index) !CValue {
+ _ = f;
+ _ = inst;
+ return f.fail("TODO add with overflow", .{});
+}
+
+fn airSubWithOverflow(f: *Function, inst: Air.Inst.Index) !CValue {
+ _ = f;
+ _ = inst;
+ return f.fail("TODO sub with overflow", .{});
+}
+
+fn airMulWithOverflow(f: *Function, inst: Air.Inst.Index) !CValue {
+ _ = f;
+ _ = inst;
+ return f.fail("TODO mul with overflow", .{});
+}
+
+fn airShlWithOverflow(f: *Function, inst: Air.Inst.Index) !CValue {
+ _ = f;
+ _ = inst;
+ return f.fail("TODO shl with overflow", .{});
+}
+
fn airNot(f: *Function, inst: Air.Inst.Index) !CValue {
if (f.liveness.isUnused(inst))
return CValue.none;
@@ -2183,6 +2213,10 @@ fn airBreakpoint(f: *Function) !CValue {
return CValue.none;
}
+fn airRetAddr(f: *Function) !CValue {
+ return f.fail("TODO implement codegen for airRetAddr", .{});
+}
+
fn airFence(f: *Function, inst: Air.Inst.Index) !CValue {
const atomic_order = f.air.instructions.items(.data)[inst].fence;
const writer = f.object.writer();