aboutsummaryrefslogtreecommitdiff
path: root/src/arch/aarch64/CodeGen.zig
diff options
context:
space:
mode:
authorRobin Voetter <robin@voetter.nl>2022-01-08 02:02:01 +0100
committerAndrew Kelley <andrew@ziglang.org>2022-01-08 14:30:11 -0500
commit4931b8dc93ee4a99a415dffab03d400e95d1a90a (patch)
tree8586196d647638d70dd7c3c3e657f9adeabdb39c /src/arch/aarch64/CodeGen.zig
parent3f586781b6c8d698468cc58ab64797097323c253 (diff)
downloadzig-4931b8dc93ee4a99a415dffab03d400e95d1a90a.tar.gz
zig-4931b8dc93ee4a99a415dffab03d400e95d1a90a.zip
stage2: @errorName sema+llvm
Diffstat (limited to 'src/arch/aarch64/CodeGen.zig')
-rw-r--r--src/arch/aarch64/CodeGen.zig11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/arch/aarch64/CodeGen.zig b/src/arch/aarch64/CodeGen.zig
index 1a7105da31..ecfb6de7f0 100644
--- a/src/arch/aarch64/CodeGen.zig
+++ b/src/arch/aarch64/CodeGen.zig
@@ -592,6 +592,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
.ctz => try self.airCtz(inst),
.popcount => try self.airPopcount(inst),
.tag_name => try self.airTagName(inst),
+ .error_name => try self.airErrorName(inst),
.atomic_store_unordered => try self.airAtomicStore(inst, .Unordered),
.atomic_store_monotonic => try self.airAtomicStore(inst, .Monotonic),
@@ -2557,6 +2558,16 @@ fn airTagName(self: *Self, inst: Air.Inst.Index) !void {
return self.finishAir(inst, result, .{ un_op, .none, .none });
}
+fn airErrorName(self: *Self, inst: Air.Inst.Index) !void {
+ const un_op = self.air.instructions.items(.data)[inst].un_op;
+ const operand = try self.resolveInst(un_op);
+ const result: MCValue = if (self.liveness.isUnused(inst)) .dead else {
+ _ = operand;
+ return self.fail("TODO implement airErrorName for aarch64", .{});
+ };
+ return self.finishAir(inst, result, .{ un_op, .none, .none });
+}
+
fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {
// First section of indexes correspond to a set number of constant values.
const ref_int = @enumToInt(inst);