]> git.lizzy.rs Git - rust.git/blob - compiler/rustc_codegen_cranelift/src/optimize/mod.rs
Merge commit '03f01bbe901d60b71cf2c5ec766aef5e532ab79d' into update_cg_clif-2020...
[rust.git] / compiler / rustc_codegen_cranelift / src / optimize / mod.rs
1 //! Various optimizations specific to cg_clif
2
3 use crate::prelude::*;
4
5 mod code_layout;
6 pub(crate) mod peephole;
7 mod stack2reg;
8
9 pub(crate) fn optimize_function<'tcx>(
10     tcx: TyCtxt<'tcx>,
11     instance: Instance<'tcx>,
12     ctx: &mut Context,
13     cold_blocks: &EntitySet<Block>,
14     clif_comments: &mut crate::pretty_clif::CommentWriter,
15 ) {
16     // The code_layout optimization is very cheap.
17     self::code_layout::optimize_function(ctx, cold_blocks);
18
19     if tcx.sess.opts.optimize == rustc_session::config::OptLevel::No {
20         return; // FIXME classify optimizations over opt levels
21     }
22     self::stack2reg::optimize_function(ctx, clif_comments);
23     crate::pretty_clif::write_clif_file(tcx, "stack2reg", None, instance, &ctx, &*clif_comments);
24     crate::base::verify_func(tcx, &*clif_comments, &ctx.func);
25 }