Skip to content

Commit

Permalink
Cranelift: add a config option for alias analysis and redundant-load …
Browse files Browse the repository at this point in the history
…elimination. (#4349)

This allows for experiments as in here [1] and also generally gives an
option to anyone who is concerned that the extra optimization may be
counterproductive or take too much time. The optimization remains
enabled by default.

[1]
#4163 (comment)
  • Loading branch information
cfallin authored Jun 28, 2022
1 parent c1b3962 commit 2034c8a
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 1 deletion.
10 changes: 10 additions & 0 deletions cranelift/codegen/meta/src/shared/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ pub(crate) fn define() -> SettingGroup {
vec!["none", "speed", "speed_and_size"],
);

settings.add_bool(
"enable_alias_analysis",
"Do redundant-load optimizations with alias analysis.",
r#"
This enables the use of a simple alias analysis to optimize away redundant loads.
Only effective when `opt_level` is `speed` or `speed_and_size`.
"#,
true,
);

settings.add_bool(
"enable_verifier",
"Run the Cranelift IR verifier at strategic times during compilation.",
Expand Down
2 changes: 1 addition & 1 deletion cranelift/codegen/src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ impl Context {

self.remove_constant_phis(isa)?;

if opt_level != OptLevel::None {
if opt_level != OptLevel::None && isa.flags().enable_alias_analysis() {
self.replace_redundant_loads()?;
self.simple_gvn(isa)?;
}
Expand Down
1 change: 1 addition & 0 deletions cranelift/codegen/src/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -516,6 +516,7 @@ libcall_call_conv = "isa_default"
baldrdash_prologue_words = 0
probestack_size_log2 = 12
regalloc_checker = false
enable_alias_analysis = true
enable_verifier = true
is_pic = false
use_colocated_libcalls = false
Expand Down
1 change: 1 addition & 0 deletions crates/wasmtime/src/engine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,7 @@ impl Engine {
| "machine_code_cfg_info"
| "tls_model" // wasmtime doesn't use tls right now
| "opt_level" // opt level doesn't change semantics
| "enable_alias_analysis" // alias analysis-based opts don't change semantics
| "probestack_func_adjusts_sp" // probestack above asserted disabled
| "probestack_size_log2" // probestack above asserted disabled
| "regalloc" // shouldn't change semantics
Expand Down

0 comments on commit 2034c8a

Please sign in to comment.