Skip to main content

lovm2_core/gen/opt/
mod.rs

1//! Optimization on LIR
2
3pub(crate) mod standard;
4pub(crate) mod valid;
5
6use super::*;
7
8pub use self::standard::StandardOptimizer;
9pub(self) use self::valid::ValidPath;
10
11/// General functions of an optimizer.
12pub trait Optimizer {
13    fn postprocess(&mut self, _: &mut Vec<LirElement>) {}
14
15    fn transform(&mut self, _: &mut Vec<LirElement>) {}
16
17    fn scan_back_for(&self, _: &LirElement) -> usize {
18        0
19    }
20}
21
22/// Does no optimization at all.
23pub struct NoOptimizer;
24
25impl Optimizer for NoOptimizer {}