rust/src/optimize/mod.rs

25 lines
838 B
Rust
Raw Normal View History

2019-12-26 13:37:10 +01:00
use crate::prelude::*;
mod code_layout;
2019-12-26 13:37:10 +01:00
mod stack2reg;
pub fn optimize_function<'tcx>(
tcx: TyCtxt<'tcx>,
2020-03-24 13:41:19 +01:00
#[cfg_attr(not(debug_assertions), allow(unused_variables))]
2019-12-26 13:37:10 +01:00
instance: Instance<'tcx>,
ctx: &mut Context,
2020-02-14 18:23:29 +01:00
cold_blocks: &EntitySet<Block>,
2019-12-26 13:37:10 +01:00
clif_comments: &mut crate::pretty_clif::CommentWriter,
) {
// The code_layout optimization is very cheap.
2020-02-14 18:23:29 +01:00
self::code_layout::optimize_function(ctx, cold_blocks);
if tcx.sess.opts.optimize == rustc_session::config::OptLevel::No {
return; // FIXME classify optimizations over opt levels
}
2020-03-20 12:18:40 +01:00
self::stack2reg::optimize_function(ctx, clif_comments);
2019-12-26 13:37:10 +01:00
#[cfg(debug_assertions)]
crate::pretty_clif::write_clif_file(tcx, "stack2reg", instance, &ctx.func, &*clif_comments, None);
crate::base::verify_func(tcx, &*clif_comments, &ctx.func);
2019-12-26 13:37:10 +01:00
}