From 323a74779fca1b269daed42f16864d7fef18ba47 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Tue, 6 Jul 2021 15:31:38 +0200 Subject: Move LinkerInfo into CrateInfo --- compiler/rustc_codegen_ssa/src/back/link.rs | 6 +++--- compiler/rustc_codegen_ssa/src/back/linker.rs | 2 +- compiler/rustc_codegen_ssa/src/back/write.rs | 7 +------ compiler/rustc_codegen_ssa/src/base.rs | 5 ++++- compiler/rustc_codegen_ssa/src/lib.rs | 2 +- 5 files changed, 10 insertions(+), 12 deletions(-) (limited to 'compiler/rustc_codegen_ssa') diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs index 8c246f1dac3..dfce3c5b7a5 100644 --- a/compiler/rustc_codegen_ssa/src/back/link.rs +++ b/compiler/rustc_codegen_ssa/src/back/link.rs @@ -1804,7 +1804,7 @@ fn linker_with_args<'a, B: ArchiveBuilder<'a>>( // FIXME: Move `/LIBPATH` addition for uwp targets from the linker construction // to the linker args construction. assert!(base_cmd.get_args().is_empty() || sess.target.vendor == "uwp"); - let cmd = &mut *codegen_results.linker_info.to_linker(base_cmd, &sess, flavor); + let cmd = &mut *codegen_results.crate_info.linker_info.to_linker(base_cmd, &sess, flavor); let link_output_kind = link_output_kind(sess, crate_type); // ------------ Early order-dependent options ------------ @@ -1986,10 +1986,10 @@ fn add_order_independent_options( if flavor == LinkerFlavor::PtxLinker { // Provide the linker with fallback to internal `target-cpu`. cmd.arg("--fallback-arch"); - cmd.arg(&codegen_results.linker_info.target_cpu); + cmd.arg(&codegen_results.crate_info.linker_info.target_cpu); } else if flavor == LinkerFlavor::BpfLinker { cmd.arg("--cpu"); - cmd.arg(&codegen_results.linker_info.target_cpu); + cmd.arg(&codegen_results.crate_info.linker_info.target_cpu); cmd.arg("--cpu-features"); cmd.arg(match &sess.opts.cg.target_feature { feat if !feat.is_empty() => feat, diff --git a/compiler/rustc_codegen_ssa/src/back/linker.rs b/compiler/rustc_codegen_ssa/src/back/linker.rs index 43ff664c3e6..49b58829483 100644 --- a/compiler/rustc_codegen_ssa/src/back/linker.rs +++ b/compiler/rustc_codegen_ssa/src/back/linker.rs @@ -35,7 +35,7 @@ pub fn disable_localization(linker: &mut Command) { /// For all the linkers we support, and information they might /// need out of the shared crate context before we get rid of it. -#[derive(Encodable, Decodable)] +#[derive(Debug, Encodable, Decodable)] pub struct LinkerInfo { pub(super) target_cpu: String, exports: FxHashMap>, diff --git a/compiler/rustc_codegen_ssa/src/back/write.rs b/compiler/rustc_codegen_ssa/src/back/write.rs index d27eb7da810..41823f7d80d 100644 --- a/compiler/rustc_codegen_ssa/src/back/write.rs +++ b/compiler/rustc_codegen_ssa/src/back/write.rs @@ -1,5 +1,4 @@ use super::link::{self, ensure_removed}; -use super::linker::LinkerInfo; use super::lto::{self, SerializedModule}; use super::symbol_export::symbol_name_for_instance_in_crate; @@ -430,8 +429,7 @@ pub fn start_async_codegen( let no_builtins = tcx.sess.contains_name(crate_attrs, sym::no_builtins); let is_compiler_builtins = tcx.sess.contains_name(crate_attrs, sym::compiler_builtins); - let linker_info = LinkerInfo::new(tcx, target_cpu); - let crate_info = CrateInfo::new(tcx); + let crate_info = CrateInfo::new(tcx, target_cpu); let regular_config = ModuleConfig::new(ModuleKind::Regular, sess, no_builtins, is_compiler_builtins); @@ -461,7 +459,6 @@ pub fn start_async_codegen( OngoingCodegen { backend, metadata, - linker_info, crate_info, coordinator_send, @@ -1799,7 +1796,6 @@ impl SharedEmitterMain { pub struct OngoingCodegen { pub backend: B, pub metadata: EncodedMetadata, - pub linker_info: LinkerInfo, pub crate_info: CrateInfo, pub coordinator_send: Sender>, pub codegen_worker_receive: Receiver>, @@ -1842,7 +1838,6 @@ impl OngoingCodegen { ( CodegenResults { metadata: self.metadata, - linker_info: self.linker_info, crate_info: self.crate_info, modules: compiled_modules.modules, diff --git a/compiler/rustc_codegen_ssa/src/base.rs b/compiler/rustc_codegen_ssa/src/base.rs index 0036935be67..234825b3909 100644 --- a/compiler/rustc_codegen_ssa/src/base.rs +++ b/compiler/rustc_codegen_ssa/src/base.rs @@ -1,3 +1,4 @@ +use crate::back::linker::LinkerInfo; use crate::back::write::{ compute_per_cgu_lto_type, start_async_codegen, submit_codegened_module_to_llvm, submit_post_lto_module_to_llvm, submit_pre_lto_module_to_llvm, ComputedLtoType, OngoingCodegen, @@ -754,7 +755,8 @@ impl Drop for AbortCodegenOnDrop { } impl CrateInfo { - pub fn new(tcx: TyCtxt<'_>) -> CrateInfo { + pub fn new(tcx: TyCtxt<'_>, target_cpu: String) -> CrateInfo { + let linker_info = LinkerInfo::new(tcx, target_cpu); let local_crate_name = tcx.crate_name(LOCAL_CRATE); 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); @@ -770,6 +772,7 @@ impl CrateInfo { }); let mut info = CrateInfo { + linker_info, local_crate_name, panic_runtime: None, compiler_builtins: None, diff --git a/compiler/rustc_codegen_ssa/src/lib.rs b/compiler/rustc_codegen_ssa/src/lib.rs index 6413e03bea4..bcd9182f58d 100644 --- a/compiler/rustc_codegen_ssa/src/lib.rs +++ b/compiler/rustc_codegen_ssa/src/lib.rs @@ -135,6 +135,7 @@ impl From<&cstore::NativeLib> for NativeLib { /// and the corresponding properties without referencing information outside of a `CrateInfo`. #[derive(Debug, Encodable, Decodable)] pub struct CrateInfo { + pub linker_info: back::linker::LinkerInfo, pub local_crate_name: Symbol, pub panic_runtime: Option, pub compiler_builtins: Option, @@ -157,7 +158,6 @@ pub struct CodegenResults { pub allocator_module: Option, pub metadata_module: Option, pub metadata: rustc_middle::middle::cstore::EncodedMetadata, - pub linker_info: back::linker::LinkerInfo, pub crate_info: CrateInfo, } -- cgit 1.4.1-3-g733a5