Skip to main content

factorio_ir/opt/
mod.rs

1mod concat;
2mod hoist;
3mod inline;
4mod peephole;
5mod simplify;
6
7use crate::module::Module;
8
9/// Run all IR optimization passes on every module.
10pub fn optimize_modules(modules: &mut [Module]) {
11    for module in modules {
12        optimize_module(module);
13    }
14}
15
16fn optimize_module(module: &mut Module) {
17    hoist::optimize_module(module);
18    simplify::optimize_module(module);
19    inline::optimize_module(module);
20    // Inlining can expose shapes simplify already knows (bool if->expr, etc.).
21    simplify::optimize_module(module);
22    concat::optimize_module(module);
23    // After unwrap_or / concat folds, CSE repeated pure arithmetic.
24    peephole::optimize_module(module);
25}
26
27#[cfg(test)]
28mod tests;