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 {}