From b10a4424051dc5017e2c10055c732658be143e7f Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Sat, 29 May 2021 14:51:27 +0200 Subject: [PATCH 1/5] Provide a default provide* implementation for CodegenBackend Both cg_llvm and cg_clif don't override it. cg_spirv does override it, so it needs to be preserved. --- src/lib.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 4ee887cd5afa..fbef575ba888 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -29,7 +29,6 @@ use rustc_codegen_ssa::CodegenResults; use rustc_errors::ErrorReported; use rustc_middle::dep_graph::{WorkProduct, WorkProductId}; use rustc_middle::middle::cstore::{EncodedMetadata, MetadataLoader}; -use rustc_middle::ty::query::Providers; use rustc_session::config::OutputFilenames; use rustc_session::Session; @@ -168,9 +167,6 @@ impl CodegenBackend for CraneliftCodegenBackend { Box::new(rustc_codegen_ssa::back::metadata::DefaultMetadataLoader) } - fn provide(&self, _providers: &mut Providers) {} - fn provide_extern(&self, _providers: &mut Providers) {} - fn target_features(&self, _sess: &Session) -> Vec { vec![] } From 20e9a1372b136a1d62d6fb8f5c351260f388eb58 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Sat, 29 May 2021 15:00:18 +0200 Subject: [PATCH 2/5] Provide default MetadataLoader --- src/lib.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index fbef575ba888..de2afc493844 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -28,7 +28,7 @@ use rustc_codegen_ssa::traits::CodegenBackend; use rustc_codegen_ssa::CodegenResults; use rustc_errors::ErrorReported; use rustc_middle::dep_graph::{WorkProduct, WorkProductId}; -use rustc_middle::middle::cstore::{EncodedMetadata, MetadataLoader}; +use rustc_middle::middle::cstore::EncodedMetadata; use rustc_session::config::OutputFilenames; use rustc_session::Session; @@ -163,10 +163,6 @@ impl CodegenBackend for CraneliftCodegenBackend { } } - fn metadata_loader(&self) -> Box { - Box::new(rustc_codegen_ssa::back::metadata::DefaultMetadataLoader) - } - fn target_features(&self, _sess: &Session) -> Vec { vec![] } From b6f0b46e2004d7a40f2deae0caa5dc22e53e42b7 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Sat, 29 May 2021 15:14:05 +0200 Subject: [PATCH 3/5] Allow printing the version of the default codegen backend if it isn't llvm --- src/lib.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index de2afc493844..fa776bf99211 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -167,6 +167,10 @@ impl CodegenBackend for CraneliftCodegenBackend { vec![] } + fn print_version(&self) { + println!("Cranelift version: {}", cranelift_codegen::VERSION); + } + fn codegen_crate( &self, tcx: TyCtxt<'_>, From 646c6043a712c661e6774d3128eab2c1be517ee3 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Sat, 29 May 2021 17:08:46 +0200 Subject: [PATCH 4/5] Move windows_subsystem field from CodegenResults to CrateInfo --- src/driver/aot.rs | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/driver/aot.rs b/src/driver/aot.rs index 9cf51d15c8ca..2270b18163b4 100644 --- a/src/driver/aot.rs +++ b/src/driver/aot.rs @@ -177,21 +177,6 @@ pub(crate) fn run_aot( metadata: EncodedMetadata, need_metadata_module: bool, ) -> Box<(CodegenResults, FxHashMap)> { - use rustc_span::symbol::sym; - - let crate_attrs = tcx.hir().attrs(rustc_hir::CRATE_HIR_ID); - let subsystem = tcx.sess.first_attr_value_str_by_name(crate_attrs, sym::windows_subsystem); - let windows_subsystem = subsystem.map(|subsystem| { - if subsystem != sym::windows && subsystem != sym::console { - tcx.sess.fatal(&format!( - "invalid windows subsystem `{}`, only \ - `windows` and `console` are allowed", - subsystem - )); - } - subsystem.to_string() - }); - let mut work_products = FxHashMap::default(); let cgus = if tcx.sess.opts.output_types.should_codegen() { @@ -312,7 +297,6 @@ pub(crate) fn run_aot( allocator_module, metadata_module, metadata, - windows_subsystem, linker_info: LinkerInfo::new(tcx, crate::target_triple(tcx.sess).to_string()), crate_info: CrateInfo::new(tcx), }, From dbdeafbc2688c52e056befee035829d0e30ee924 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Sat, 29 May 2021 17:37:38 +0200 Subject: [PATCH 5/5] Move crate_name field from OngoingCodegen to CrateInfo --- src/driver/aot.rs | 1 - src/lib.rs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/driver/aot.rs b/src/driver/aot.rs index 2270b18163b4..6676d88602c4 100644 --- a/src/driver/aot.rs +++ b/src/driver/aot.rs @@ -292,7 +292,6 @@ pub(crate) fn run_aot( Box::new(( CodegenResults { - crate_name: tcx.crate_name(LOCAL_CRATE), modules, allocator_module, metadata_module, diff --git a/src/lib.rs b/src/lib.rs index fa776bf99211..904efed5bd98 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -218,7 +218,7 @@ impl CodegenBackend for CraneliftCodegenBackend { sess, &codegen_results, outputs, - &codegen_results.crate_name.as_str(), + &codegen_results.crate_info.local_crate_name.as_str(), ); Ok(())