diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2021-05-29 17:08:46 +0200 |
|---|---|---|
| committer | bjorn3 <bjorn3@users.noreply.github.com> | 2021-06-04 13:20:04 +0200 |
| commit | 96247017fad9b216259cfa64a7762a816854dcd7 (patch) | |
| tree | 7a0c4b8b2736bc66b5e2a3aa5b2fa12534899937 /compiler/rustc_codegen_ssa/src | |
| parent | f8ed66be6b3025073c24028375345d90633b6ced (diff) | |
| download | rust-96247017fad9b216259cfa64a7762a816854dcd7.tar.gz rust-96247017fad9b216259cfa64a7762a816854dcd7.zip | |
Move windows_subsystem field from CodegenResults to CrateInfo
Diffstat (limited to 'compiler/rustc_codegen_ssa/src')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/link.rs | 2 | ||||
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/write.rs | 14 | ||||
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/base.rs | 15 | ||||
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/lib.rs | 2 |
4 files changed, 17 insertions, 16 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs index 32275e9b073..c056156109f 100644 --- a/compiler/rustc_codegen_ssa/src/back/link.rs +++ b/compiler/rustc_codegen_ssa/src/back/link.rs @@ -1686,7 +1686,7 @@ fn linker_with_args<'a, B: ArchiveBuilder<'a>>( // OBJECT-FILES-NO, AUDIT-ORDER if crate_type == CrateType::Executable && sess.target.is_like_windows { - if let Some(ref s) = codegen_results.windows_subsystem { + if let Some(ref s) = codegen_results.crate_info.windows_subsystem { cmd.subsystem(s); } } diff --git a/compiler/rustc_codegen_ssa/src/back/write.rs b/compiler/rustc_codegen_ssa/src/back/write.rs index 49774dc6d5c..4791558f76f 100644 --- a/compiler/rustc_codegen_ssa/src/back/write.rs +++ b/compiler/rustc_codegen_ssa/src/back/write.rs @@ -430,17 +430,6 @@ pub fn start_async_codegen<B: ExtraBackendMethods>( let crate_attrs = tcx.hir().attrs(rustc_hir::CRATE_HIR_ID); 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 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 linker_info = LinkerInfo::new(tcx, target_cpu); let crate_info = CrateInfo::new(tcx); @@ -474,7 +463,6 @@ pub fn start_async_codegen<B: ExtraBackendMethods>( backend, crate_name, metadata, - windows_subsystem, linker_info, crate_info, @@ -1814,7 +1802,6 @@ pub struct OngoingCodegen<B: ExtraBackendMethods> { pub backend: B, pub crate_name: Symbol, pub metadata: EncodedMetadata, - pub windows_subsystem: Option<String>, pub linker_info: LinkerInfo, pub crate_info: CrateInfo, pub coordinator_send: Sender<Box<dyn Any + Send>>, @@ -1859,7 +1846,6 @@ impl<B: ExtraBackendMethods> OngoingCodegen<B> { CodegenResults { crate_name: self.crate_name, metadata: self.metadata, - windows_subsystem: self.windows_subsystem, linker_info: self.linker_info, crate_info: self.crate_info, diff --git a/compiler/rustc_codegen_ssa/src/base.rs b/compiler/rustc_codegen_ssa/src/base.rs index b44e74d5ae8..c9a9bedb47e 100644 --- a/compiler/rustc_codegen_ssa/src/base.rs +++ b/compiler/rustc_codegen_ssa/src/base.rs @@ -30,6 +30,7 @@ use rustc_middle::ty::{self, Instance, Ty, TyCtxt}; use rustc_session::cgu_reuse_tracker::CguReuse; use rustc_session::config::{self, EntryFnType}; use rustc_session::Session; +use rustc_span::symbol::sym; use rustc_target::abi::{Align, LayoutOf, VariantIdx}; use std::ops::{Deref, DerefMut}; @@ -755,6 +756,19 @@ impl<B: ExtraBackendMethods> Drop for AbortCodegenOnDrop<B> { impl CrateInfo { pub fn new(tcx: TyCtxt<'_>) -> CrateInfo { + 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 info = CrateInfo { panic_runtime: None, compiler_builtins: None, @@ -769,6 +783,7 @@ impl CrateInfo { lang_item_to_crate: Default::default(), missing_lang_items: Default::default(), dependency_formats: tcx.dependency_formats(()), + windows_subsystem, }; let lang_items = tcx.lang_items(); diff --git a/compiler/rustc_codegen_ssa/src/lib.rs b/compiler/rustc_codegen_ssa/src/lib.rs index 12da3d9e155..35d32130d74 100644 --- a/compiler/rustc_codegen_ssa/src/lib.rs +++ b/compiler/rustc_codegen_ssa/src/lib.rs @@ -141,6 +141,7 @@ pub struct CrateInfo { pub lang_item_to_crate: FxHashMap<LangItem, CrateNum>, pub missing_lang_items: FxHashMap<CrateNum, Vec<LangItem>>, pub dependency_formats: Lrc<Dependencies>, + pub windows_subsystem: Option<String>, } #[derive(Encodable, Decodable)] @@ -150,7 +151,6 @@ pub struct CodegenResults { pub allocator_module: Option<CompiledModule>, pub metadata_module: Option<CompiledModule>, pub metadata: rustc_middle::middle::cstore::EncodedMetadata, - pub windows_subsystem: Option<String>, pub linker_info: back::linker::LinkerInfo, pub crate_info: CrateInfo, } |
