From 4ce329d1ebdd5a8556f58535b4cbeb698b5c03c4 Mon Sep 17 00:00:00 2001 From: Benjamin Bouvier Date: Thu, 21 Jul 2022 11:12:13 +0200 Subject: [PATCH] Add a cranelift flag to enable/disable verbose logs for regalloc2 (#4481) --- cranelift/codegen/meta/src/shared/settings.rs | 12 ++++++++++++ cranelift/codegen/src/machinst/compile.rs | 2 +- cranelift/codegen/src/settings.rs | 1 + crates/wasmtime/src/engine.rs | 1 + 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/cranelift/codegen/meta/src/shared/settings.rs b/cranelift/codegen/meta/src/shared/settings.rs index 286a98be49..121c8fe74a 100644 --- a/cranelift/codegen/meta/src/shared/settings.rs +++ b/cranelift/codegen/meta/src/shared/settings.rs @@ -18,6 +18,18 @@ pub(crate) fn define() -> SettingGroup { false, ); + settings.add_bool( + "regalloc_verbose_logs", + "Enable verbose debug logs for regalloc2.", + r#" + This adds extra logging for regalloc2 output, that is quite valuable to understand + decisions taken by the register allocator as well as debugging it. It is disabled by + default, as it can cause many log calls which can slow down compilation by a large + amount. + "#, + false, + ); + settings.add_enum( "opt_level", "Optimization level for generated code.", diff --git a/cranelift/codegen/src/machinst/compile.rs b/cranelift/codegen/src/machinst/compile.rs index 55b5965ecd..957b7822f1 100644 --- a/cranelift/codegen/src/machinst/compile.rs +++ b/cranelift/codegen/src/machinst/compile.rs @@ -33,7 +33,7 @@ pub fn compile( let regalloc_result = { let _tt = timing::regalloc(); let mut options = RegallocOptions::default(); - options.verbose_log = log::log_enabled!(log::Level::Trace); + options.verbose_log = b.flags().regalloc_verbose_logs(); regalloc2::run(&vcode, machine_env, &options) .map_err(|err| { log::error!( diff --git a/cranelift/codegen/src/settings.rs b/cranelift/codegen/src/settings.rs index 8cb37ff725..cfacb4e27e 100644 --- a/cranelift/codegen/src/settings.rs +++ b/cranelift/codegen/src/settings.rs @@ -527,6 +527,7 @@ libcall_call_conv = "isa_default" baldrdash_prologue_words = 0 probestack_size_log2 = 12 regalloc_checker = false +regalloc_verbose_logs = false enable_alias_analysis = true enable_verifier = true is_pic = false diff --git a/crates/wasmtime/src/engine.rs b/crates/wasmtime/src/engine.rs index b21a08e8f0..30a0c40d30 100644 --- a/crates/wasmtime/src/engine.rs +++ b/crates/wasmtime/src/engine.rs @@ -389,6 +389,7 @@ impl Engine { | "enable_simd" | "enable_verifier" | "regalloc_checker" + | "regalloc_verbose_logs" | "is_pic" | "machine_code_cfg_info" | "tls_model" // wasmtime doesn't use tls right now