diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-03-25 20:11:23 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-03-25 20:11:23 -0700 |
| commit | 4bfcd105eff797aceb621d2c8b971c15fef6e450 (patch) | |
| tree | c52920c273d85b6143fd49a372243e72df2d1389 /src/astgen.zig | |
| parent | 4fd3a2e8e82b1793329e329c5a8045bfd6f40a33 (diff) | |
| download | zig-4bfcd105eff797aceb621d2c8b971c15fef6e450.tar.gz zig-4bfcd105eff797aceb621d2c8b971c15fef6e450.zip | |
stage2: fix `@compileLog`.
Diffstat (limited to 'src/astgen.zig')
| -rw-r--r-- | src/astgen.zig | 25 |
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| { |
