CLI: introduce --verbose-intern-pool

and stop dumping to stderr without the user's consent.
This commit is contained in:
Andrew Kelley 2023-05-26 17:44:23 -07:00
parent 8011faa004
commit a596ea683c
2 changed files with 16 additions and 4 deletions

View File

@ -87,6 +87,7 @@ clang_preprocessor_mode: ClangPreprocessorMode,
/// Whether to print clang argvs to stdout. /// Whether to print clang argvs to stdout.
verbose_cc: bool, verbose_cc: bool,
verbose_air: bool, verbose_air: bool,
verbose_intern_pool: bool,
verbose_llvm_ir: ?[]const u8, verbose_llvm_ir: ?[]const u8,
verbose_llvm_bc: ?[]const u8, verbose_llvm_bc: ?[]const u8,
verbose_cimport: bool, verbose_cimport: bool,
@ -593,6 +594,7 @@ pub const InitOptions = struct {
verbose_cc: bool = false, verbose_cc: bool = false,
verbose_link: bool = false, verbose_link: bool = false,
verbose_air: bool = false, verbose_air: bool = false,
verbose_intern_pool: bool = false,
verbose_llvm_ir: ?[]const u8 = null, verbose_llvm_ir: ?[]const u8 = null,
verbose_llvm_bc: ?[]const u8 = null, verbose_llvm_bc: ?[]const u8 = null,
verbose_cimport: bool = false, verbose_cimport: bool = false,
@ -1574,6 +1576,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
.clang_preprocessor_mode = options.clang_preprocessor_mode, .clang_preprocessor_mode = options.clang_preprocessor_mode,
.verbose_cc = options.verbose_cc, .verbose_cc = options.verbose_cc,
.verbose_air = options.verbose_air, .verbose_air = options.verbose_air,
.verbose_intern_pool = options.verbose_intern_pool,
.verbose_llvm_ir = options.verbose_llvm_ir, .verbose_llvm_ir = options.verbose_llvm_ir,
.verbose_llvm_bc = options.verbose_llvm_bc, .verbose_llvm_bc = options.verbose_llvm_bc,
.verbose_cimport = options.verbose_cimport, .verbose_cimport = options.verbose_cimport,
@ -2026,10 +2029,12 @@ pub fn update(comp: *Compilation, main_progress_node: *std.Progress.Node) !void
try comp.performAllTheWork(main_progress_node); try comp.performAllTheWork(main_progress_node);
if (comp.bin_file.options.module) |module| { if (comp.bin_file.options.module) |module| {
std.debug.print("intern pool stats for '{s}':\n", .{ if (builtin.mode == .Debug and comp.verbose_intern_pool) {
comp.bin_file.options.root_name, std.debug.print("intern pool stats for '{s}':\n", .{
}); comp.bin_file.options.root_name,
module.intern_pool.dump(); });
module.intern_pool.dump();
}
if (comp.bin_file.options.is_test and comp.totalErrorCount() == 0) { if (comp.bin_file.options.is_test and comp.totalErrorCount() == 0) {
// The `test_functions` decl has been intentionally postponed until now, // The `test_functions` decl has been intentionally postponed until now,
@ -5422,6 +5427,7 @@ fn buildOutputFromZig(
.verbose_cc = comp.verbose_cc, .verbose_cc = comp.verbose_cc,
.verbose_link = comp.bin_file.options.verbose_link, .verbose_link = comp.bin_file.options.verbose_link,
.verbose_air = comp.verbose_air, .verbose_air = comp.verbose_air,
.verbose_intern_pool = comp.verbose_intern_pool,
.verbose_llvm_ir = comp.verbose_llvm_ir, .verbose_llvm_ir = comp.verbose_llvm_ir,
.verbose_llvm_bc = comp.verbose_llvm_bc, .verbose_llvm_bc = comp.verbose_llvm_bc,
.verbose_cimport = comp.verbose_cimport, .verbose_cimport = comp.verbose_cimport,
@ -5500,6 +5506,7 @@ pub fn build_crt_file(
.verbose_cc = comp.verbose_cc, .verbose_cc = comp.verbose_cc,
.verbose_link = comp.bin_file.options.verbose_link, .verbose_link = comp.bin_file.options.verbose_link,
.verbose_air = comp.verbose_air, .verbose_air = comp.verbose_air,
.verbose_intern_pool = comp.verbose_intern_pool,
.verbose_llvm_ir = comp.verbose_llvm_ir, .verbose_llvm_ir = comp.verbose_llvm_ir,
.verbose_llvm_bc = comp.verbose_llvm_bc, .verbose_llvm_bc = comp.verbose_llvm_bc,
.verbose_cimport = comp.verbose_cimport, .verbose_cimport = comp.verbose_cimport,

View File

@ -569,6 +569,7 @@ const usage_build_generic =
\\ --verbose-link Display linker invocations \\ --verbose-link Display linker invocations
\\ --verbose-cc Display C compiler invocations \\ --verbose-cc Display C compiler invocations
\\ --verbose-air Enable compiler debug output for Zig AIR \\ --verbose-air Enable compiler debug output for Zig AIR
\\ --verbose-intern-pool Enable compiler debug output for InternPool
\\ --verbose-llvm-ir[=path] Enable compiler debug output for unoptimized LLVM IR \\ --verbose-llvm-ir[=path] Enable compiler debug output for unoptimized LLVM IR
\\ --verbose-llvm-bc=[path] Enable compiler debug output for unoptimized LLVM BC \\ --verbose-llvm-bc=[path] Enable compiler debug output for unoptimized LLVM BC
\\ --verbose-cimport Enable compiler debug output for C imports \\ --verbose-cimport Enable compiler debug output for C imports
@ -735,6 +736,7 @@ fn buildOutputType(
var verbose_link = (builtin.os.tag != .wasi or builtin.link_libc) and std.process.hasEnvVarConstant("ZIG_VERBOSE_LINK"); var verbose_link = (builtin.os.tag != .wasi or builtin.link_libc) and std.process.hasEnvVarConstant("ZIG_VERBOSE_LINK");
var verbose_cc = (builtin.os.tag != .wasi or builtin.link_libc) and std.process.hasEnvVarConstant("ZIG_VERBOSE_CC"); var verbose_cc = (builtin.os.tag != .wasi or builtin.link_libc) and std.process.hasEnvVarConstant("ZIG_VERBOSE_CC");
var verbose_air = false; var verbose_air = false;
var verbose_intern_pool = false;
var verbose_llvm_ir: ?[]const u8 = null; var verbose_llvm_ir: ?[]const u8 = null;
var verbose_llvm_bc: ?[]const u8 = null; var verbose_llvm_bc: ?[]const u8 = null;
var verbose_cimport = false; var verbose_cimport = false;
@ -1460,6 +1462,8 @@ fn buildOutputType(
verbose_cc = true; verbose_cc = true;
} else if (mem.eql(u8, arg, "--verbose-air")) { } else if (mem.eql(u8, arg, "--verbose-air")) {
verbose_air = true; verbose_air = true;
} else if (mem.eql(u8, arg, "--verbose-intern-pool")) {
verbose_intern_pool = true;
} else if (mem.eql(u8, arg, "--verbose-llvm-ir")) { } else if (mem.eql(u8, arg, "--verbose-llvm-ir")) {
verbose_llvm_ir = "-"; verbose_llvm_ir = "-";
} else if (mem.startsWith(u8, arg, "--verbose-llvm-ir=")) { } else if (mem.startsWith(u8, arg, "--verbose-llvm-ir=")) {
@ -3156,6 +3160,7 @@ fn buildOutputType(
.verbose_cc = verbose_cc, .verbose_cc = verbose_cc,
.verbose_link = verbose_link, .verbose_link = verbose_link,
.verbose_air = verbose_air, .verbose_air = verbose_air,
.verbose_intern_pool = verbose_intern_pool,
.verbose_llvm_ir = verbose_llvm_ir, .verbose_llvm_ir = verbose_llvm_ir,
.verbose_llvm_bc = verbose_llvm_bc, .verbose_llvm_bc = verbose_llvm_bc,
.verbose_cimport = verbose_cimport, .verbose_cimport = verbose_cimport,