Skip to content

Commit 0648177

Browse files
committed
AstGen: avoid multiple dbg_stmt instructions in a row
This is purely an optimization to emit fewer ZIR instructions.
1 parent 3389890 commit 0648177

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/AstGen.zig

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3071,6 +3071,19 @@ fn emitDbgNode(gz: *GenZir, node: Ast.Node.Index) !void {
30713071
const line = astgen.source_line - gz.decl_line;
30723072
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+
30743087
_ = try gz.add(.{ .tag = .dbg_stmt, .data = .{
30753088
.dbg_stmt = .{
30763089
.line = line,

0 commit comments

Comments
 (0)