aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-04-19 18:44:59 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-04-19 18:44:59 -0700
commit4630e3891c7c833d8a8f42e3755099b478dce3f3 (patch)
tree705e6542c481635149a8e1489964a074483a501f /src/main.zig
parenta136c093bf7a48398e36a73e91213f93a4efc503 (diff)
downloadzig-4630e3891c7c833d8a8f42e3755099b478dce3f3.tar.gz
zig-4630e3891c7c833d8a8f42e3755099b478dce3f3.zip
AstGen: implement inline asm output
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/main.zig b/src/main.zig
index d6c9e0b641..3edabca95f 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -3561,26 +3561,41 @@ pub fn cmdAstgen(
defer file.zir.deinit(gpa);
{
+ const token_bytes = @sizeOf(std.zig.ast.TokenList) +
+ file.tree.tokens.len * (@sizeOf(std.zig.Token.Tag) + @sizeOf(std.zig.ast.ByteOffset));
+ const tree_bytes = @sizeOf(std.zig.ast.Tree) + file.tree.nodes.len *
+ (@sizeOf(std.zig.ast.Node.Tag) +
+ @sizeOf(std.zig.ast.Node.Data) +
+ @sizeOf(std.zig.ast.TokenIndex));
const instruction_bytes = file.zir.instructions.len *
- (@sizeOf(Zir.Inst.Tag) + @sizeOf(Zir.Inst.Data));
+ // Here we don't use @sizeOf(Zir.Inst.Data) because it would include
+ // the debug safety tag but we want to measure release size.
+ (@sizeOf(Zir.Inst.Tag) + 8);
const extra_bytes = file.zir.extra.len * @sizeOf(u32);
const total_bytes = @sizeOf(Zir) + instruction_bytes + extra_bytes +
file.zir.string_bytes.len * @sizeOf(u8);
const stdout = io.getStdOut();
+ const fmtIntSizeBin = std.fmt.fmtIntSizeBin;
+ // zig fmt: off
try stdout.writer().print(
- \\# Total bytes: {}
+ \\# Source bytes: {}
+ \\# Tokens: {} ({})
+ \\# AST Nodes: {} ({})
+ \\# Total ZIR bytes: {}
\\# Instructions: {d} ({})
\\# String Table Bytes: {}
\\# Extra Data Items: {d} ({})
\\
, .{
- std.fmt.fmtIntSizeBin(total_bytes),
- file.zir.instructions.len,
- std.fmt.fmtIntSizeBin(instruction_bytes),
- std.fmt.fmtIntSizeBin(file.zir.string_bytes.len),
- file.zir.extra.len,
- std.fmt.fmtIntSizeBin(extra_bytes),
+ fmtIntSizeBin(source.len),
+ file.tree.tokens.len, fmtIntSizeBin(token_bytes),
+ file.tree.nodes.len, fmtIntSizeBin(tree_bytes),
+ fmtIntSizeBin(total_bytes),
+ file.zir.instructions.len, fmtIntSizeBin(instruction_bytes),
+ fmtIntSizeBin(file.zir.string_bytes.len),
+ file.zir.extra.len, fmtIntSizeBin(extra_bytes),
});
+ // zig fmt: on
}
if (file.zir.hasCompileErrors()) {