Add a cranelift flag to enable/disable verbose logs for regalloc2 (#4481)

This commit is contained in:
Benjamin Bouvier
2022-07-21 11:12:13 +02:00
committed by GitHub
parent 9c72a0566e
commit 4ce329d1eb
4 changed files with 15 additions and 1 deletions

View File

@@ -18,6 +18,18 @@ pub(crate) fn define() -> SettingGroup {
false, 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( settings.add_enum(
"opt_level", "opt_level",
"Optimization level for generated code.", "Optimization level for generated code.",

View File

@@ -33,7 +33,7 @@ pub fn compile<B: LowerBackend + TargetIsa>(
let regalloc_result = { let regalloc_result = {
let _tt = timing::regalloc(); let _tt = timing::regalloc();
let mut options = RegallocOptions::default(); 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) regalloc2::run(&vcode, machine_env, &options)
.map_err(|err| { .map_err(|err| {
log::error!( log::error!(

View File

@@ -527,6 +527,7 @@ libcall_call_conv = "isa_default"
baldrdash_prologue_words = 0 baldrdash_prologue_words = 0
probestack_size_log2 = 12 probestack_size_log2 = 12
regalloc_checker = false regalloc_checker = false
regalloc_verbose_logs = false
enable_alias_analysis = true enable_alias_analysis = true
enable_verifier = true enable_verifier = true
is_pic = false is_pic = false

View File

@@ -389,6 +389,7 @@ impl Engine {
| "enable_simd" | "enable_simd"
| "enable_verifier" | "enable_verifier"
| "regalloc_checker" | "regalloc_checker"
| "regalloc_verbose_logs"
| "is_pic" | "is_pic"
| "machine_code_cfg_info" | "machine_code_cfg_info"
| "tls_model" // wasmtime doesn't use tls right now | "tls_model" // wasmtime doesn't use tls right now