pub struct OptimizationPipeline {
pub passes: Vec<Box<dyn Fn(&Program) -> Program>>,
pub pass_names: Vec<String>,
pub max_iterations: usize,
}Expand description
A configurable pipeline of optimization passes.
Passes are applied in order. The pipeline can be run multiple times until no further reductions occur (fixed-point iteration).
Fields§
§passes: Vec<Box<dyn Fn(&Program) -> Program>>§pass_names: Vec<String>§max_iterations: usizeImplementations§
Source§impl OptimizationPipeline
impl OptimizationPipeline
pub fn new() -> Self
pub fn add_pass<F: Fn(&Program) -> Program + 'static>( self, name: &str, pass: F, ) -> Self
Sourcepub fn run_once(&self, program: &Program) -> OptimizationResult
pub fn run_once(&self, program: &Program) -> OptimizationResult
Run all passes once.
Sourcepub fn run_to_fixed_point(&self, program: &Program) -> OptimizationResult
pub fn run_to_fixed_point(&self, program: &Program) -> OptimizationResult
Run passes repeatedly until the program stops changing or max iterations reached.
Auto Trait Implementations§
impl !RefUnwindSafe for OptimizationPipeline
impl !Send for OptimizationPipeline
impl !Sync for OptimizationPipeline
impl !UnwindSafe for OptimizationPipeline
impl Freeze for OptimizationPipeline
impl Unpin for OptimizationPipeline
impl UnsafeUnpin for OptimizationPipeline
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more