authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-08-08 20:29:22-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-08-08 20:43:05-07:00
log0648177ed7a1ad5364c478b63ec28a6de15e4ad9
tree7358f94f7aa66e497e716be65b87a1d214357bd0
parent3389890709b8470c59cadc21471e4a6c8dda48a6

AstGen: avoid multiple dbg_stmt instructions in a row

This is purely an optimization to emit fewer ZIR instructions.

1 files changed, 13 insertions(+), 0 deletions(-)

src/AstGen.zig+13
...@@ -3071,6 +3071,19 @@ fn emitDbgNode(gz: *GenZir, node: Ast.Node.Index) !void {...@@ -3071,6 +3071,19 @@ fn emitDbgNode(gz: *GenZir, node: Ast.Node.Index) !void {
3071 const line = astgen.source_line - gz.decl_line;3071 const line = astgen.source_line - gz.decl_line;
3072 const column = astgen.source_column;3072 const column = astgen.source_column;
30733073
3074 if (gz.instructions.items.len > 0) {
3075 const last = gz.instructions.items[gz.instructions.items.len - 1];
3076 const zir_tags = astgen.instructions.items(.tag);
3077 if (zir_tags[last] == .dbg_stmt) {
3078 const zir_datas = astgen.instructions.items(.data);
3079 zir_datas[last].dbg_stmt = .{
3080 .line = line,
3081 .column = column,
3082 };
3083 return;
3084 }
3085 }
3086
3074 _ = try gz.add(.{ .tag = .dbg_stmt, .data = .{3087 _ = try gz.add(.{ .tag = .dbg_stmt, .data = .{
3075 .dbg_stmt = .{3088 .dbg_stmt = .{
3076 .line = line,3089 .line = line,