From 399bb2e154395f1f2372eccb10ea41d6ba5ef68f Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 25 Mar 2021 13:03:54 -0700 Subject: astgen: fix array access --- src/astgen.zig | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/astgen.zig b/src/astgen.zig index 7245e09b66..bab9bda8ad 100644 --- a/src/astgen.zig +++ b/src/astgen.zig @@ -1838,25 +1838,21 @@ fn arrayAccess( rl: ResultLoc, node: ast.Node.Index, ) InnerError!zir.Inst.Ref { - if (true) @panic("TODO update for zir-memory-layout"); - const tree = scope.tree(); + const gz = scope.getGenZir(); + const tree = gz.tree(); const main_tokens = tree.nodes.items(.main_token); const node_datas = tree.nodes.items(.data); - - const usize_type = try addZIRInstConst(mod, scope, src, .{ - .ty = Type.initTag(.type), - .val = Value.initTag(.usize_type), - }); - const index_rl: ResultLoc = .{ .ty = usize_type }; switch (rl) { - .ref => return addZirInstTag(mod, scope, src, .elem_ptr, .{ - .array = try expr(mod, scope, .ref, node_datas[node].lhs), - .index = try expr(mod, scope, index_rl, node_datas[node].rhs), - }), - else => return rvalue(mod, scope, rl, try addZirInstTag(mod, scope, src, .elem_val, .{ - .array = try expr(mod, scope, .none, node_datas[node].lhs), - .index = try expr(mod, scope, index_rl, node_datas[node].rhs), - })), + .ref => return gz.addBin( + .elem_ptr, + try expr(mod, scope, .ref, node_datas[node].lhs), + try expr(mod, scope, .{ .ty = .usize_type }, node_datas[node].rhs), + ), + else => return rvalue(mod, scope, rl, try gz.addBin( + .elem_val, + try expr(mod, scope, .none, node_datas[node].lhs), + try expr(mod, scope, .{ .ty = .usize_type }, node_datas[node].rhs), + ), node), } } -- cgit v1.2.3