Skip to content

Commit 9624701

Browse files
committed
Move windows_subsystem field from CodegenResults to CrateInfo
1 parent f8ed66b commit 9624701

File tree

5 files changed

+17
-32
lines changed

5 files changed

+17
-32
lines changed

compiler/rustc_codegen_cranelift/src/driver/aot.rs

-16
Original file line numberDiff line numberDiff line change
@@ -177,21 +177,6 @@ pub(crate) fn run_aot(
177177
metadata: EncodedMetadata,
178178
need_metadata_module: bool,
179179
) -> Box<(CodegenResults, FxHashMap<WorkProductId, WorkProduct>)> {
180-
use rustc_span::symbol::sym;
181-
182-
let crate_attrs = tcx.hir().attrs(rustc_hir::CRATE_HIR_ID);
183-
let subsystem = tcx.sess.first_attr_value_str_by_name(crate_attrs, sym::windows_subsystem);
184-
let windows_subsystem = subsystem.map(|subsystem| {
185-
if subsystem != sym::windows && subsystem != sym::console {
186-
tcx.sess.fatal(&format!(
187-
"invalid windows subsystem `{}`, only \
188-
`windows` and `console` are allowed",
189-
subsystem
190-
));
191-
}
192-
subsystem.to_string()
193-
});
194-
195180
let mut work_products = FxHashMap::default();
196181

197182
let cgus = if tcx.sess.opts.output_types.should_codegen() {
@@ -312,7 +297,6 @@ pub(crate) fn run_aot(
312297
allocator_module,
313298
metadata_module,
314299
metadata,
315-
windows_subsystem,
316300
linker_info: LinkerInfo::new(tcx, crate::target_triple(tcx.sess).to_string()),
317301
crate_info: CrateInfo::new(tcx),
318302
},

compiler/rustc_codegen_ssa/src/back/link.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1686,7 +1686,7 @@ fn linker_with_args<'a, B: ArchiveBuilder<'a>>(
16861686

16871687
// OBJECT-FILES-NO, AUDIT-ORDER
16881688
if crate_type == CrateType::Executable && sess.target.is_like_windows {
1689-
if let Some(ref s) = codegen_results.windows_subsystem {
1689+
if let Some(ref s) = codegen_results.crate_info.windows_subsystem {
16901690
cmd.subsystem(s);
16911691
}
16921692
}

compiler/rustc_codegen_ssa/src/back/write.rs

-14
Original file line numberDiff line numberDiff line change
@@ -430,17 +430,6 @@ pub fn start_async_codegen<B: ExtraBackendMethods>(
430430
let crate_attrs = tcx.hir().attrs(rustc_hir::CRATE_HIR_ID);
431431
let no_builtins = tcx.sess.contains_name(crate_attrs, sym::no_builtins);
432432
let is_compiler_builtins = tcx.sess.contains_name(crate_attrs, sym::compiler_builtins);
433-
let subsystem = tcx.sess.first_attr_value_str_by_name(crate_attrs, sym::windows_subsystem);
434-
let windows_subsystem = subsystem.map(|subsystem| {
435-
if subsystem != sym::windows && subsystem != sym::console {
436-
tcx.sess.fatal(&format!(
437-
"invalid windows subsystem `{}`, only \
438-
`windows` and `console` are allowed",
439-
subsystem
440-
));
441-
}
442-
subsystem.to_string()
443-
});
444433

445434
let linker_info = LinkerInfo::new(tcx, target_cpu);
446435
let crate_info = CrateInfo::new(tcx);
@@ -474,7 +463,6 @@ pub fn start_async_codegen<B: ExtraBackendMethods>(
474463
backend,
475464
crate_name,
476465
metadata,
477-
windows_subsystem,
478466
linker_info,
479467
crate_info,
480468

@@ -1814,7 +1802,6 @@ pub struct OngoingCodegen<B: ExtraBackendMethods> {
18141802
pub backend: B,
18151803
pub crate_name: Symbol,
18161804
pub metadata: EncodedMetadata,
1817-
pub windows_subsystem: Option<String>,
18181805
pub linker_info: LinkerInfo,
18191806
pub crate_info: CrateInfo,
18201807
pub coordinator_send: Sender<Box<dyn Any + Send>>,
@@ -1859,7 +1846,6 @@ impl<B: ExtraBackendMethods> OngoingCodegen<B> {
18591846
CodegenResults {
18601847
crate_name: self.crate_name,
18611848
metadata: self.metadata,
1862-
windows_subsystem: self.windows_subsystem,
18631849
linker_info: self.linker_info,
18641850
crate_info: self.crate_info,
18651851

compiler/rustc_codegen_ssa/src/base.rs

+15
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ use rustc_middle::ty::{self, Instance, Ty, TyCtxt};
3030
use rustc_session::cgu_reuse_tracker::CguReuse;
3131
use rustc_session::config::{self, EntryFnType};
3232
use rustc_session::Session;
33+
use rustc_span::symbol::sym;
3334
use rustc_target::abi::{Align, LayoutOf, VariantIdx};
3435

3536
use std::ops::{Deref, DerefMut};
@@ -755,6 +756,19 @@ impl<B: ExtraBackendMethods> Drop for AbortCodegenOnDrop<B> {
755756

756757
impl CrateInfo {
757758
pub fn new(tcx: TyCtxt<'_>) -> CrateInfo {
759+
let crate_attrs = tcx.hir().attrs(rustc_hir::CRATE_HIR_ID);
760+
let subsystem = tcx.sess.first_attr_value_str_by_name(crate_attrs, sym::windows_subsystem);
761+
let windows_subsystem = subsystem.map(|subsystem| {
762+
if subsystem != sym::windows && subsystem != sym::console {
763+
tcx.sess.fatal(&format!(
764+
"invalid windows subsystem `{}`, only \
765+
`windows` and `console` are allowed",
766+
subsystem
767+
));
768+
}
769+
subsystem.to_string()
770+
});
771+
758772
let mut info = CrateInfo {
759773
panic_runtime: None,
760774
compiler_builtins: None,
@@ -769,6 +783,7 @@ impl CrateInfo {
769783
lang_item_to_crate: Default::default(),
770784
missing_lang_items: Default::default(),
771785
dependency_formats: tcx.dependency_formats(()),
786+
windows_subsystem,
772787
};
773788
let lang_items = tcx.lang_items();
774789

compiler/rustc_codegen_ssa/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ pub struct CrateInfo {
141141
pub lang_item_to_crate: FxHashMap<LangItem, CrateNum>,
142142
pub missing_lang_items: FxHashMap<CrateNum, Vec<LangItem>>,
143143
pub dependency_formats: Lrc<Dependencies>,
144+
pub windows_subsystem: Option<String>,
144145
}
145146

146147
#[derive(Encodable, Decodable)]
@@ -150,7 +151,6 @@ pub struct CodegenResults {
150151
pub allocator_module: Option<CompiledModule>,
151152
pub metadata_module: Option<CompiledModule>,
152153
pub metadata: rustc_middle::middle::cstore::EncodedMetadata,
153-
pub windows_subsystem: Option<String>,
154154
pub linker_info: back::linker::LinkerInfo,
155155
pub crate_info: CrateInfo,
156156
}

0 commit comments

Comments
 (0)