diff options
| author | Jacob G-W <jacoblevgw@gmail.com> | 2021-08-16 23:11:55 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-08-21 23:52:55 -0400 |
| commit | 4ac37eb484737e98269e198b31b81ee8e929b4f1 (patch) | |
| tree | 2d5e66fcd1a2f6c9f129583d2ea8f671fff4832b /src/Sema.zig | |
| parent | f378b0adce80aa6f85d9bf6bf97172426de2c719 (diff) | |
| download | zig-4ac37eb484737e98269e198b31b81ee8e929b4f1.tar.gz zig-4ac37eb484737e98269e198b31b81ee8e929b4f1.zip | |
stage2 Air: add struct_field_ptr_index_{0..3}
Since these are very common, it will save memory.
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index d543b59ac0..a11bdec66d 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -8119,14 +8119,29 @@ fn structFieldPtr( } try sema.requireRuntimeBlock(block, src); + const tag: Air.Inst.Tag = switch (field_index) { + 0 => .struct_field_ptr_index_0, + 1 => .struct_field_ptr_index_1, + 2 => .struct_field_ptr_index_2, + 3 => .struct_field_ptr_index_3, + else => { + return block.addInst(.{ + .tag = .struct_field_ptr, + .data = .{ .ty_pl = .{ + .ty = try sema.addType(ptr_field_ty), + .payload = try sema.addExtra(Air.StructField{ + .struct_operand = struct_ptr, + .field_index = @intCast(u32, field_index), + }), + } }, + }); + }, + }; return block.addInst(.{ - .tag = .struct_field_ptr, - .data = .{ .ty_pl = .{ + .tag = tag, + .data = .{ .ty_op = .{ .ty = try sema.addType(ptr_field_ty), - .payload = try sema.addExtra(Air.StructField{ - .struct_operand = struct_ptr, - .field_index = @intCast(u32, field_index), - }), + .operand = struct_ptr, } }, }); } |
