Expose ssa verification as a regalloc2 option (#102)
Adds the validate_ssa flag to the RegallocOptions struct, enabling ssa validation of inputs before register allocation takes place.
This commit is contained in:
@@ -6,7 +6,6 @@
|
||||
//! Utilities for fuzzing.
|
||||
|
||||
pub mod func;
|
||||
pub mod ssa;
|
||||
|
||||
// Re-exports for fuzz targets.
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
//! its design.
|
||||
|
||||
use crate::cfg::CFGInfo;
|
||||
use crate::ssa::validate_ssa;
|
||||
use crate::{Function, MachineEnv, Output, PReg, ProgPoint, RegAllocError, RegClass};
|
||||
use std::collections::HashMap;
|
||||
|
||||
@@ -120,9 +121,14 @@ pub fn run<F: Function>(
|
||||
func: &F,
|
||||
mach_env: &MachineEnv,
|
||||
enable_annotations: bool,
|
||||
enable_ssa_checker: bool,
|
||||
) -> Result<Output, RegAllocError> {
|
||||
let cfginfo = CFGInfo::new(func)?;
|
||||
|
||||
if enable_ssa_checker {
|
||||
validate_ssa(func, &cfginfo)?;
|
||||
}
|
||||
|
||||
let mut env = Env::new(func, mach_env, cfginfo, enable_annotations);
|
||||
env.init()?;
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ pub mod indexset;
|
||||
pub(crate) mod ion;
|
||||
pub(crate) mod moves;
|
||||
pub(crate) mod postorder;
|
||||
pub mod ssa;
|
||||
|
||||
#[macro_use]
|
||||
mod index;
|
||||
@@ -1477,7 +1478,7 @@ pub fn run<F: Function>(
|
||||
env: &MachineEnv,
|
||||
options: &RegallocOptions,
|
||||
) -> Result<Output, RegAllocError> {
|
||||
ion::run(func, env, options.verbose_log)
|
||||
ion::run(func, env, options.verbose_log, options.validate_ssa)
|
||||
}
|
||||
|
||||
/// Options for allocation.
|
||||
@@ -1485,4 +1486,7 @@ pub fn run<F: Function>(
|
||||
pub struct RegallocOptions {
|
||||
/// Add extra verbosity to debug logs.
|
||||
pub verbose_log: bool,
|
||||
|
||||
/// Run the SSA validator before allocating registers.
|
||||
pub validate_ssa: bool,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user