aboutsummaryrefslogtreecommitdiff
path: root/src/astgen.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-03-25 20:11:23 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-03-25 20:11:23 -0700
commit4bfcd105eff797aceb621d2c8b971c15fef6e450 (patch)
treec52920c273d85b6143fd49a372243e72df2d1389 /src/astgen.zig
parent4fd3a2e8e82b1793329e329c5a8045bfd6f40a33 (diff)
downloadzig-4bfcd105eff797aceb621d2c8b971c15fef6e450.tar.gz
zig-4bfcd105eff797aceb621d2c8b971c15fef6e450.zip
stage2: fix `@compileLog`.
Diffstat (limited to 'src/astgen.zig')
-rw-r--r--src/astgen.zig25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/astgen.zig b/src/astgen.zig
index 89d9b6e8eb..675bf77065 100644
--- a/src/astgen.zig
+++ b/src/astgen.zig
@@ -1130,6 +1130,7 @@ fn blockExprStmts(
.@"unreachable",
.elided,
.store,
+ .store_node,
.store_to_block_ptr,
.store_to_inferred_ptr,
.resolve_inferred_alloc,
@@ -3198,7 +3199,9 @@ fn typeOf(
items[param_i] = try expr(mod, scope, .none, param);
}
- const result = try gz.addPlNode(.typeof_peer, node, zir.Inst.MultiOp{ .operands_len = @intCast(u32, params.len) });
+ const result = try gz.addPlNode(.typeof_peer, node, zir.Inst.MultiOp{
+ .operands_len = @intCast(u32, params.len),
+ });
try gz.zir_code.appendRefs(items);
return rvalue(mod, scope, rl, result, node);
@@ -3279,12 +3282,15 @@ fn builtinCall(
return rvalue(mod, scope, rl, result, node);
},
.compile_log => {
- if (true) @panic("TODO update for zir-memory-layout");
- const arena = scope.arena();
- var targets = try arena.alloc(zir.Inst.Ref, params.len);
- for (params) |param, param_i|
- targets[param_i] = try expr(mod, scope, .none, param);
- const result = try addZIRInst(mod, scope, src, zir.Inst.CompileLog, .{ .to_log = targets }, .{});
+ const arg_refs = try mod.gpa.alloc(zir.Inst.Ref, params.len);
+ defer mod.gpa.free(arg_refs);
+
+ for (params) |param, i| arg_refs[i] = try expr(mod, scope, .none, param);
+
+ const result = try gz.addPlNode(.compile_log, node, zir.Inst.MultiOp{
+ .operands_len = @intCast(u32, params.len),
+ });
+ try gz.zir_code.appendRefs(arg_refs);
return rvalue(mod, scope, rl, result, node);
},
.field => {
@@ -3742,7 +3748,10 @@ fn rvalue(
.operand = result,
}),
.ptr => |ptr_inst| {
- _ = try gz.addBin(.store, ptr_inst, result);
+ _ = try gz.addPlNode(.store_node, src_node, zir.Inst.Bin{
+ .lhs = ptr_inst,
+ .rhs = result,
+ });
return result;
},
.bitcasted_ptr => |bitcasted_ptr| {