use crate::{
core::{
compile_passes::{
circuit_pass::CircuitPass,
DeadCodeEliminator,
DeadGateEliminator,
Optimizer,
BUILD_FN_SEQ,
},
ir::IntermediateRepresentation,
},
AsyncMPCCircuit,
};
pub struct Compiler;
impl Compiler {
fn dead_code_elimination(old_ir: IntermediateRepresentation) -> IntermediateRepresentation {
DeadCodeEliminator::eliminate(old_ir)
}
pub fn optimize_into_circuitable(
mut ir: IntermediateRepresentation,
) -> IntermediateRepresentation {
for build_fn in BUILD_FN_SEQ {
ir = Optimizer::optimize(ir);
ir = Self::dead_code_elimination(ir);
ir = build_fn(ir);
}
Self::dead_code_elimination(ir)
}
pub fn improve_async_mpc_circuit(circuit: AsyncMPCCircuit) -> AsyncMPCCircuit {
DeadGateEliminator::make_and_run(circuit)
}
}