diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2020-10-26 09:53:27 +0100 |
|---|---|---|
| committer | bjorn3 <bjorn3@users.noreply.github.com> | 2020-10-26 09:53:27 +0100 |
| commit | ac4f7deb2f3558d2d923fa6ddcbb7210db9c2d52 (patch) | |
| tree | ca7dcb9c908285e2af6eb0d8807d3e81dc9ba2ee /compiler/rustc_codegen_cranelift/src/optimize/mod.rs | |
| parent | cf798c1ec65a5ec3491846777f9003fabb881b4a (diff) | |
| parent | 793d26047f994e23415f8f6bb5686ff25d3dda92 (diff) | |
| download | rust-ac4f7deb2f3558d2d923fa6ddcbb7210db9c2d52.tar.gz rust-ac4f7deb2f3558d2d923fa6ddcbb7210db9c2d52.zip | |
Add 'compiler/rustc_codegen_cranelift/' from commit '793d26047f994e23415f8f6bb5686ff25d3dda92'
git-subtree-dir: compiler/rustc_codegen_cranelift git-subtree-mainline: cf798c1ec65a5ec3491846777f9003fabb881b4a git-subtree-split: 793d26047f994e23415f8f6bb5686ff25d3dda92
Diffstat (limited to 'compiler/rustc_codegen_cranelift/src/optimize/mod.rs')
| -rw-r--r-- | compiler/rustc_codegen_cranelift/src/optimize/mod.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_cranelift/src/optimize/mod.rs b/compiler/rustc_codegen_cranelift/src/optimize/mod.rs new file mode 100644 index 00000000000..3ce7f8cd9a8 --- /dev/null +++ b/compiler/rustc_codegen_cranelift/src/optimize/mod.rs @@ -0,0 +1,25 @@ +//! Various optimizations specific to cg_clif + +use crate::prelude::*; + +mod code_layout; +pub(crate) mod peephole; +mod stack2reg; + +pub(crate) fn optimize_function<'tcx>( + tcx: TyCtxt<'tcx>, + instance: Instance<'tcx>, + ctx: &mut Context, + cold_blocks: &EntitySet<Block>, + clif_comments: &mut crate::pretty_clif::CommentWriter, +) { + // The code_layout optimization is very cheap. + 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 + } + self::stack2reg::optimize_function(ctx, clif_comments); + crate::pretty_clif::write_clif_file(tcx, "stack2reg", None, instance, &ctx, &*clif_comments); + crate::base::verify_func(tcx, &*clif_comments, &ctx.func); +} |
