diff --git a/crates/fuzzing/src/generators.rs b/crates/fuzzing/src/generators.rs index 221c54e0ee..e6e4cc76be 100644 --- a/crates/fuzzing/src/generators.rs +++ b/crates/fuzzing/src/generators.rs @@ -102,7 +102,6 @@ impl OptLevel { #[derive(Arbitrary, Debug)] pub struct Config { opt_level: OptLevel, - debug_verifier: bool, debug_info: bool, canonicalize_nans: bool, interruptable: bool, @@ -123,7 +122,6 @@ impl Config { .static_memory_guard_size(self.static_memory_guard_size.unwrap_or(0).into()) .dynamic_memory_guard_size(self.dynamic_memory_guard_size.unwrap_or(0).into()) .cranelift_nan_canonicalization(self.canonicalize_nans) - .cranelift_debug_verifier(self.debug_verifier) .cranelift_opt_level(self.opt_level.to_wasmtime()) .interruptable(self.interruptable); return cfg; diff --git a/crates/fuzzing/src/lib.rs b/crates/fuzzing/src/lib.rs index f344e2bf0f..534c42542d 100644 --- a/crates/fuzzing/src/lib.rs +++ b/crates/fuzzing/src/lib.rs @@ -37,7 +37,6 @@ pub(crate) fn fuzz_default_config( init_fuzzing(); let mut config = wasmtime::Config::new(); config - .cranelift_debug_verifier(true) .cranelift_nan_canonicalization(true) .wasm_bulk_memory(true) .strategy(strategy)?; diff --git a/crates/fuzzing/src/oracles.rs b/crates/fuzzing/src/oracles.rs index 7242da627d..19fcc6b1f2 100644 --- a/crates/fuzzing/src/oracles.rs +++ b/crates/fuzzing/src/oracles.rs @@ -273,9 +273,7 @@ pub fn make_api_calls(api: crate::generators::api::ApiCalls) { ApiCall::ConfigNew => { log::trace!("creating config"); assert!(config.is_none()); - let mut cfg = Config::new(); - cfg.cranelift_debug_verifier(true); - config = Some(cfg); + config = Some(crate::fuzz_default_config(wasmtime::Strategy::Cranelift).unwrap()); } ApiCall::ConfigDebugInfo(b) => { diff --git a/src/lib.rs b/src/lib.rs index d0f6476262..d254a95e5f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -169,13 +169,21 @@ struct CommonOptions { /// Byte size of the guard region after dynamic memories are allocated. #[structopt(long)] dynamic_memory_guard_size: Option, + + /// Enable Cranelift's internal debug verifier (expensive) + #[structopt(long)] + enable_cranelift_debug_verifier: bool, + + /// Enable Cranelift's internal NaN canonicalization + #[structopt(long)] + enable_cranelift_nan_canonicalization: bool, } impl CommonOptions { fn config(&self) -> Result { let mut config = Config::new(); config - .cranelift_debug_verifier(cfg!(debug_assertions)) + .cranelift_debug_verifier(self.enable_cranelift_debug_verifier) .debug_info(self.debug_info) .wasm_bulk_memory(self.enable_bulk_memory || self.enable_all) .wasm_simd(self.enable_simd || self.enable_all) @@ -184,7 +192,8 @@ impl CommonOptions { .wasm_threads(self.enable_threads || self.enable_all) .cranelift_opt_level(self.opt_level()) .strategy(pick_compilation_strategy(self.cranelift, self.lightbeam)?)? - .profiler(pick_profiling_strategy(self.jitdump, self.vtune)?)?; + .profiler(pick_profiling_strategy(self.jitdump, self.vtune)?)? + .cranelift_nan_canonicalization(self.enable_cranelift_nan_canonicalization); for CraneliftFlag { name, value } in &self.cranelift_flags { unsafe { config.cranelift_other_flag(name, value)?;