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