diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2021-07-03 14:28:53 +0200 |
|---|---|---|
| committer | bjorn3 <bjorn3@users.noreply.github.com> | 2021-07-03 14:28:53 +0200 |
| commit | 6a31385363f26f5324b2e125a96541efec88f60c (patch) | |
| tree | b7acb12865bc6e1fec9445c1a8d5e987f85e55a6 | |
| parent | 55e077970891c33122ed34f7f8a061709ba01dc3 (diff) | |
| download | rust-6a31385363f26f5324b2e125a96541efec88f60c.tar.gz rust-6a31385363f26f5324b2e125a96541efec88f60c.zip | |
Misc target related improvements
| -rw-r--r-- | src/base.rs | 19 | ||||
| -rw-r--r-- | src/driver/aot.rs | 4 | ||||
| -rw-r--r-- | src/driver/jit.rs | 2 | ||||
| -rw-r--r-- | src/optimize/mod.rs | 5 | ||||
| -rw-r--r-- | src/pretty_clif.rs | 9 |
5 files changed, 27 insertions, 12 deletions
diff --git a/src/base.rs b/src/base.rs index f44ab276590..3d78eed77b9 100644 --- a/src/base.rs +++ b/src/base.rs @@ -109,7 +109,14 @@ pub(crate) fn codegen_fn<'tcx>( let context = &mut cx.cached_context; context.func = func; - crate::pretty_clif::write_clif_file(tcx, "unopt", None, instance, &context, &clif_comments); + crate::pretty_clif::write_clif_file( + tcx, + "unopt", + module.isa(), + instance, + &context, + &clif_comments, + ); // Verify function verify_func(tcx, &clif_comments, &context.func); @@ -126,7 +133,13 @@ pub(crate) fn codegen_fn<'tcx>( // Perform rust specific optimizations tcx.sess.time("optimize clif ir", || { - crate::optimize::optimize_function(tcx, instance, context, &mut clif_comments); + crate::optimize::optimize_function( + tcx, + module.isa(), + instance, + context, + &mut clif_comments, + ); }); // Define function @@ -141,7 +154,7 @@ pub(crate) fn codegen_fn<'tcx>( crate::pretty_clif::write_clif_file( tcx, "opt", - Some(module.isa()), + module.isa(), instance, &context, &clif_comments, diff --git a/src/driver/aot.rs b/src/driver/aot.rs index 6676d88602c..5d2c79e3e87 100644 --- a/src/driver/aot.rs +++ b/src/driver/aot.rs @@ -290,13 +290,15 @@ pub(crate) fn run_aot( None }; + // FIXME handle `-Ctarget-cpu=native` + let target_cpu = tcx.sess.opts.cg.target_cpu.as_ref().unwrap_or(&tcx.sess.target.cpu).to_owned(); Box::new(( CodegenResults { modules, allocator_module, metadata_module, metadata, - linker_info: LinkerInfo::new(tcx, crate::target_triple(tcx.sess).to_string()), + linker_info: LinkerInfo::new(tcx, target_cpu), crate_info: CrateInfo::new(tcx), }, work_products, diff --git a/src/driver/jit.rs b/src/driver/jit.rs index 39a39e764cb..f454d0efab8 100644 --- a/src/driver/jit.rs +++ b/src/driver/jit.rs @@ -159,7 +159,7 @@ pub(crate) fn run_jit(tcx: TyCtxt<'_>, backend_config: BackendConfig) -> ! { AbiParam::new(jit_module.target_config().pointer_type()), ], returns: vec![AbiParam::new(jit_module.target_config().pointer_type() /*isize*/)], - call_conv: CallConv::triple_default(&crate::target_triple(tcx.sess)), + call_conv: jit_module.target_config().default_call_conv, }; let start_func_id = jit_module.declare_function("main", Linkage::Import, &start_sig).unwrap(); let finalized_start: *const u8 = jit_module.get_finalized_function(start_func_id); diff --git a/src/optimize/mod.rs b/src/optimize/mod.rs index 137fb5f7731..61033d85a12 100644 --- a/src/optimize/mod.rs +++ b/src/optimize/mod.rs @@ -1,17 +1,20 @@ //! Various optimizations specific to cg_clif +use cranelift_codegen::isa::TargetIsa; + use crate::prelude::*; pub(crate) mod peephole; pub(crate) fn optimize_function<'tcx>( tcx: TyCtxt<'tcx>, + isa: &dyn TargetIsa, instance: Instance<'tcx>, ctx: &mut Context, clif_comments: &mut crate::pretty_clif::CommentWriter, ) { // FIXME classify optimizations over opt levels once we have more - crate::pretty_clif::write_clif_file(tcx, "preopt", None, instance, &ctx, &*clif_comments); + crate::pretty_clif::write_clif_file(tcx, "preopt", isa, instance, &ctx, &*clif_comments); crate::base::verify_func(tcx, &*clif_comments, &ctx.func); } diff --git a/src/pretty_clif.rs b/src/pretty_clif.rs index cd8c5b51608..2f278134d5b 100644 --- a/src/pretty_clif.rs +++ b/src/pretty_clif.rs @@ -233,7 +233,7 @@ pub(crate) fn write_ir_file( pub(crate) fn write_clif_file<'tcx>( tcx: TyCtxt<'tcx>, postfix: &str, - isa: Option<&dyn cranelift_codegen::isa::TargetIsa>, + isa: &dyn cranelift_codegen::isa::TargetIsa, instance: Instance<'tcx>, context: &cranelift_codegen::Context, mut clif_comments: &CommentWriter, @@ -242,22 +242,19 @@ pub(crate) fn write_clif_file<'tcx>( tcx, || format!("{}.{}.clif", tcx.symbol_name(instance).name, postfix), |file| { - let value_ranges = isa - .map(|isa| context.build_value_labels_ranges(isa).expect("value location ranges")); - let mut clif = String::new(); cranelift_codegen::write::decorate_function( &mut clif_comments, &mut clif, &context.func, - &DisplayFunctionAnnotations { isa, value_ranges: value_ranges.as_ref() }, + &DisplayFunctionAnnotations { isa: Some(isa), value_ranges: None }, ) .unwrap(); writeln!(file, "test compile")?; writeln!(file, "set is_pic")?; writeln!(file, "set enable_simd")?; - writeln!(file, "target {} haswell", crate::target_triple(tcx.sess))?; + writeln!(file, "target {} nehalem", crate::target_triple(tcx.sess))?; writeln!(file)?; file.write_all(clif.as_bytes())?; Ok(()) |
