1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use crate::mir::ops;
use crate::mir::value::Value;
mod duplicate_alloc_ops;
mod unused_ops;
pub fn optimise_fun(fun: ops::Fun) -> ops::Fun {
let mut used_ops = unused_ops::remove_unused_fun_ops(fun.ops);
duplicate_alloc_ops::remove_redundant_alloc_ops(&mut used_ops);
ops::Fun {
ops: unused_ops::remove_unused_fun_ops(used_ops),
..fun
}
}
pub fn optimise_inlined_fun(ops: Box<[ops::Op]>, return_value: &Value) -> Box<[ops::Op]> {
let mut used_ops = unused_ops::remove_unused_value_ops(ops, return_value);
duplicate_alloc_ops::remove_redundant_alloc_ops(&mut used_ops);
used_ops
}