pub fn apply_passes(
    expr: &mut Expr,
    passes: &[Pass],
    stats: &mut CompilationStats,
    use_experimental: bool,
) -> WeldResult<()> {
    for pass in passes {
        let start = PreciseTime::now();
        pass.transform(expr, use_experimental)?;
        let end = PreciseTime::now();
        stats.pass_times.push((pass.pass_name(), start.to(end)));
        debug!("After {} pass:\n{}", pass.pass_name(), expr.pretty_print());
    }
    Ok(())
}
Apply passes from a list until fix point.
weld/src/optimizer/mod.rs