Rollup merge of #156245 - bjorn3:move_invocation_temp, r=oli-obk

Move invocation_temp into OutputFilenames

While it was previously defined in Session, it is only ever used with OutputFilenames methods.
This commit is contained in:
Jonathan Brouwer
2026-05-07 14:13:54 +02:00
committed by GitHub
14 changed files with 68 additions and 169 deletions
+1 -1
View File
@@ -4101,6 +4101,7 @@ dependencies = [
name = "rustc_interface"
version = "0.0.0"
dependencies = [
"rand 0.9.2",
"rustc_abi",
"rustc_ast",
"rustc_ast_lowering",
@@ -4602,7 +4603,6 @@ version = "0.0.0"
dependencies = [
"getopts",
"libc",
"rand 0.9.2",
"rustc_abi",
"rustc_ast",
"rustc_data_structures",
@@ -150,7 +150,6 @@ fn make_module(sess: &Session, name: String) -> UnwindModule<ObjectModule> {
fn emit_cgu(
output_filenames: &OutputFilenames,
invocation_temp: Option<&str>,
prof: &SelfProfilerRef,
name: String,
module: UnwindModule<ObjectModule>,
@@ -166,7 +165,6 @@ fn emit_cgu(
let module_regular = emit_module(
output_filenames,
invocation_temp,
prof,
product.object,
ModuleKind::Regular,
@@ -192,7 +190,6 @@ fn emit_cgu(
fn emit_module(
output_filenames: &OutputFilenames,
invocation_temp: Option<&str>,
prof: &SelfProfilerRef,
mut object: cranelift_object::object::write::Object<'_>,
kind: ModuleKind,
@@ -211,7 +208,7 @@ fn emit_module(
object.set_section_data(comment_section, producer, 1);
}
let tmp_file = output_filenames.temp_path_for_cgu(OutputType::Object, &name, invocation_temp);
let tmp_file = output_filenames.temp_path_for_cgu(OutputType::Object, &name);
let file = match File::create(&tmp_file) {
Ok(file) => file,
Err(err) => return Err(format!("error creating object file: {}", err)),
@@ -251,11 +248,8 @@ fn reuse_workproduct_for_cgu(
cgu: &CodegenUnit<'_>,
) -> Result<ModuleCodegenResult, String> {
let work_product = cgu.previous_work_product(tcx);
let obj_out_regular = tcx.output_filenames(()).temp_path_for_cgu(
OutputType::Object,
cgu.name().as_str(),
tcx.sess.invocation_temp.as_deref(),
);
let obj_out_regular =
tcx.output_filenames(()).temp_path_for_cgu(OutputType::Object, cgu.name().as_str());
let source_file_regular = rustc_incremental::in_incr_comp_dir_sess(
tcx.sess,
work_product.saved_files.get("o").expect("no saved object file in work product"),
@@ -394,7 +388,6 @@ fn module_codegen(
let producer = crate::debuginfo::producer(tcx.sess);
let profiler = tcx.prof.clone();
let invocation_temp = tcx.sess.invocation_temp.clone();
let output_filenames = tcx.output_filenames(()).clone();
let should_write_ir = crate::pretty_clif::should_write_ir(tcx.sess);
@@ -421,19 +414,13 @@ fn module_codegen(
let global_asm_object_file =
profiler.generic_activity_with_arg("compile assembly", &*cgu_name).run(|| {
crate::global_asm::compile_global_asm(
&global_asm_config,
&cgu_name,
global_asm,
invocation_temp.as_deref(),
)
crate::global_asm::compile_global_asm(&global_asm_config, &cgu_name, global_asm)
})?;
let codegen_result =
profiler.generic_activity_with_arg("write object file", &*cgu_name).run(|| {
emit_cgu(
&global_asm_config.output_filenames,
invocation_temp.as_deref(),
&profiler,
cgu_name,
module,
@@ -456,7 +443,6 @@ fn emit_allocator_module(tcx: TyCtxt<'_>) -> Option<CompiledModule> {
match emit_module(
tcx.output_filenames(()),
tcx.sess.invocation_temp.as_deref(),
&tcx.sess.prof,
product.object,
ModuleKind::Allocator,
@@ -185,7 +185,6 @@ pub(crate) fn compile_global_asm(
config: &GlobalAsmConfig,
cgu_name: &str,
global_asm: String,
invocation_temp: Option<&str>,
) -> Result<Option<PathBuf>, String> {
if global_asm.is_empty() {
return Ok(None);
@@ -200,7 +199,7 @@ pub(crate) fn compile_global_asm(
global_asm.push('\n');
let global_asm_object_file = add_file_stem_postfix(
config.output_filenames.temp_path_for_cgu(OutputType::Object, cgu_name, invocation_temp),
config.output_filenames.temp_path_for_cgu(OutputType::Object, cgu_name),
".asm",
);
+5 -21
View File
@@ -29,16 +29,8 @@ pub(crate) fn codegen(
let lto_mode = module.module_llvm.lto_mode;
let lto_supported = module.module_llvm.lto_supported;
let bc_out = cgcx.output_filenames.temp_path_for_cgu(
OutputType::Bitcode,
&module.name,
cgcx.invocation_temp.as_deref(),
);
let obj_out = cgcx.output_filenames.temp_path_for_cgu(
OutputType::Object,
&module.name,
cgcx.invocation_temp.as_deref(),
);
let bc_out = cgcx.output_filenames.temp_path_for_cgu(OutputType::Bitcode, &module.name);
let obj_out = cgcx.output_filenames.temp_path_for_cgu(OutputType::Object, &module.name);
if config.bitcode_needed() {
let _timer =
@@ -82,22 +74,15 @@ pub(crate) fn codegen(
}
if config.emit_ir {
let out = cgcx.output_filenames.temp_path_for_cgu(
OutputType::LlvmAssembly,
&module.name,
cgcx.invocation_temp.as_deref(),
);
let out =
cgcx.output_filenames.temp_path_for_cgu(OutputType::LlvmAssembly, &module.name);
std::fs::write(out, "").expect("write file");
}
if config.emit_asm {
let _timer =
prof.generic_activity_with_arg("GCC_module_codegen_emit_asm", &*module.name);
let path = cgcx.output_filenames.temp_path_for_cgu(
OutputType::Assembly,
&module.name,
cgcx.invocation_temp.as_deref(),
);
let path = cgcx.output_filenames.temp_path_for_cgu(OutputType::Assembly, &module.name);
context.compile_to_file(OutputKind::Assembler, path.to_str().expect("path to str"));
}
@@ -215,7 +200,6 @@ pub(crate) fn codegen(
config.emit_asm,
config.emit_ir,
&cgcx.output_filenames,
cgcx.invocation_temp.as_deref(),
)
}
+11 -40
View File
@@ -117,17 +117,13 @@ pub(crate) fn create_target_machine(tcx: TyCtxt<'_>, mod_name: &str) -> OwnedTar
tcx.sess.split_debuginfo(),
tcx.sess.opts.unstable_opts.split_dwarf_kind,
mod_name,
tcx.sess.invocation_temp.as_deref(),
)
} else {
None
};
let output_obj_file = Some(tcx.output_filenames(()).temp_path_for_cgu(
OutputType::Object,
mod_name,
tcx.sess.invocation_temp.as_deref(),
));
let output_obj_file =
Some(tcx.output_filenames(()).temp_path_for_cgu(OutputType::Object, mod_name));
let config = TargetMachineFactoryConfig { split_dwarf_file, output_obj_file };
target_machine_factory(
@@ -322,11 +318,7 @@ pub(crate) fn save_temp_bitcode(
return;
}
let ext = format!("{name}.bc");
let path = cgcx.output_filenames.temp_path_ext_for_cgu(
&ext,
&module.name,
cgcx.invocation_temp.as_deref(),
);
let path = cgcx.output_filenames.temp_path_ext_for_cgu(&ext, &module.name);
write_bitcode_to_file(&module.module_llvm, &path)
}
@@ -949,11 +941,8 @@ pub(crate) fn optimize(
if let Some(thin_lto_buffer) = thin_lto_buffer {
let thin_lto_buffer = thin_lto_buffer.unwrap();
module.thin_lto_buffer = Some(thin_lto_buffer.data().to_vec());
let bc_summary_out = cgcx.output_filenames.temp_path_for_cgu(
OutputType::ThinLinkBitcode,
&module.name,
cgcx.invocation_temp.as_deref(),
);
let bc_summary_out =
cgcx.output_filenames.temp_path_for_cgu(OutputType::ThinLinkBitcode, &module.name);
if let Some(thin_lto_summary_buffer) = thin_lto_summary_buffer
&& let Some(thin_link_bitcode_filename) = bc_summary_out.file_name()
{
@@ -1008,16 +997,8 @@ pub(crate) fn codegen(
// copy it to the .o file, and delete the bitcode if it wasn't
// otherwise requested.
let bc_out = cgcx.output_filenames.temp_path_for_cgu(
OutputType::Bitcode,
&module.name,
cgcx.invocation_temp.as_deref(),
);
let obj_out = cgcx.output_filenames.temp_path_for_cgu(
OutputType::Object,
&module.name,
cgcx.invocation_temp.as_deref(),
);
let bc_out = cgcx.output_filenames.temp_path_for_cgu(OutputType::Bitcode, &module.name);
let obj_out = cgcx.output_filenames.temp_path_for_cgu(OutputType::Object, &module.name);
if config.bitcode_needed() {
if config.emit_bc || config.emit_obj == EmitObj::Bitcode {
@@ -1055,11 +1036,8 @@ pub(crate) fn codegen(
if config.emit_ir {
let _timer =
prof.generic_activity_with_arg("LLVM_module_codegen_emit_ir", &*module.name);
let out = cgcx.output_filenames.temp_path_for_cgu(
OutputType::LlvmAssembly,
&module.name,
cgcx.invocation_temp.as_deref(),
);
let out =
cgcx.output_filenames.temp_path_for_cgu(OutputType::LlvmAssembly, &module.name);
let out_c = path_to_c_string(&out);
extern "C" fn demangle_callback(
@@ -1103,11 +1081,7 @@ extern "C" fn demangle_callback(
if config.emit_asm {
let _timer =
prof.generic_activity_with_arg("LLVM_module_codegen_emit_asm", &*module.name);
let path = cgcx.output_filenames.temp_path_for_cgu(
OutputType::Assembly,
&module.name,
cgcx.invocation_temp.as_deref(),
);
let path = cgcx.output_filenames.temp_path_for_cgu(OutputType::Assembly, &module.name);
// We can't use the same module for asm and object code output,
// because that triggers various errors like invalid IR or broken
@@ -1136,9 +1110,7 @@ extern "C" fn demangle_callback(
let _timer =
prof.generic_activity_with_arg("LLVM_module_codegen_emit_obj", &*module.name);
let dwo_out = cgcx
.output_filenames
.temp_path_dwo_for_cgu(&module.name, cgcx.invocation_temp.as_deref());
let dwo_out = cgcx.output_filenames.temp_path_dwo_for_cgu(&module.name);
let dwo_out = match (cgcx.split_debuginfo, cgcx.split_dwarf_kind) {
// Don't change how DWARF is emitted when disabled.
(SplitDebuginfo::Off, _) => None,
@@ -1203,7 +1175,6 @@ extern "C" fn demangle_callback(
config.emit_asm,
config.emit_ir,
&cgcx.output_filenames,
cgcx.invocation_temp.as_deref(),
)
}
@@ -903,7 +903,6 @@ pub(crate) fn build_compile_unit_di_node<'ll, 'tcx>(
tcx.sess.split_debuginfo(),
tcx.sess.opts.unstable_opts.split_dwarf_kind,
codegen_unit_name,
tcx.sess.invocation_temp.as_deref(),
) {
// We get a path relative to the working directory from split_dwarf_path
Some(tcx.sess.source_map().path_mapping().to_real_filename(work_dir, f))
+1 -6
View File
@@ -112,12 +112,7 @@ pub fn link_binary(
let path = MaybeTempDir::new(tmpdir, sess.opts.cg.save_temps);
let crate_name = format!("{}", crate_info.local_crate_name);
let out_filename = output.file_for_writing(
outputs,
OutputType::Exe,
&crate_name,
sess.invocation_temp.as_deref(),
);
let out_filename = output.file_for_writing(outputs, OutputType::Exe, &crate_name);
match crate_type {
CrateType::Rlib => {
let _timer = sess.timer("link_rlib");
+5 -24
View File
@@ -295,17 +295,13 @@ pub fn new(cgcx: &CodegenContext, module_name: &str) -> TargetMachineFactoryConf
cgcx.split_debuginfo,
cgcx.split_dwarf_kind,
module_name,
cgcx.invocation_temp.as_deref(),
)
} else {
None
};
let output_obj_file = Some(cgcx.output_filenames.temp_path_for_cgu(
OutputType::Object,
module_name,
cgcx.invocation_temp.as_deref(),
));
let output_obj_file =
Some(cgcx.output_filenames.temp_path_for_cgu(OutputType::Object, module_name));
TargetMachineFactoryConfig { split_dwarf_file, output_obj_file }
}
}
@@ -332,7 +328,6 @@ pub struct CodegenContext {
pub time_trace: bool,
pub crate_types: Vec<CrateType>,
pub output_filenames: Arc<OutputFilenames>,
pub invocation_temp: Option<String>,
pub module_config: Arc<ModuleConfig>,
pub opt_level: OptLevel,
pub backend_features: Vec<String>,
@@ -527,11 +522,7 @@ pub fn produce_final_output_artifacts(
if let [module] = &compiled_modules.modules[..] {
// 1) Only one codegen unit. In this case it's no difficulty
// to copy `foo.0.x` to `foo.x`.
let path = crate_output.temp_path_for_cgu(
output_type,
&module.name,
sess.invocation_temp.as_deref(),
);
let path = crate_output.temp_path_for_cgu(output_type, &module.name);
let output = crate_output.path(output_type);
if !output_type.is_text_output() && output.is_tty() {
sess.dcx()
@@ -910,12 +901,7 @@ fn execute_copy_from_cache_work_item(
module.source.saved_files.get("dwo").as_ref().and_then(|saved_dwarf_object_file| {
let dwarf_obj_out = cgcx
.output_filenames
.split_dwarf_path(
cgcx.split_debuginfo,
cgcx.split_dwarf_kind,
&module.name,
cgcx.invocation_temp.as_deref(),
)
.split_dwarf_path(cgcx.split_debuginfo, cgcx.split_dwarf_kind, &module.name)
.expect(
"saved dwarf object in work product but `split_dwarf_path` returned `None`",
);
@@ -925,11 +911,7 @@ fn execute_copy_from_cache_work_item(
let mut load_from_incr_cache = |perform, output_type: OutputType| {
if perform {
let saved_file = module.source.saved_files.get(output_type.extension())?;
let output_path = cgcx.output_filenames.temp_path_for_cgu(
output_type,
&module.name,
cgcx.invocation_temp.as_deref(),
);
let output_path = cgcx.output_filenames.temp_path_for_cgu(output_type, &module.name);
load_from_incr_comp_dir(output_path, &saved_file)
} else {
None
@@ -1297,7 +1279,6 @@ fn start_executing_work<B: ExtraBackendMethods>(
split_dwarf_kind: tcx.sess.opts.unstable_opts.split_dwarf_kind,
parallel: backend.supports_parallel() && !sess.opts.unstable_opts.no_parallel_backend,
pointer_size: tcx.data_layout.pointer_size(),
invocation_temp: sess.invocation_temp.clone(),
};
// This is the "main loop" of parallel work happening for parallel codegen.
+7 -12
View File
@@ -95,19 +95,14 @@ pub fn into_compiled_module(
emit_asm: bool,
emit_ir: bool,
outputs: &OutputFilenames,
invocation_temp: Option<&str>,
) -> CompiledModule {
let object = emit_obj
.then(|| outputs.temp_path_for_cgu(OutputType::Object, &self.name, invocation_temp));
let dwarf_object =
emit_dwarf_obj.then(|| outputs.temp_path_dwo_for_cgu(&self.name, invocation_temp));
let bytecode = emit_bc
.then(|| outputs.temp_path_for_cgu(OutputType::Bitcode, &self.name, invocation_temp));
let assembly = emit_asm
.then(|| outputs.temp_path_for_cgu(OutputType::Assembly, &self.name, invocation_temp));
let llvm_ir = emit_ir.then(|| {
outputs.temp_path_for_cgu(OutputType::LlvmAssembly, &self.name, invocation_temp)
});
let object = emit_obj.then(|| outputs.temp_path_for_cgu(OutputType::Object, &self.name));
let dwarf_object = emit_dwarf_obj.then(|| outputs.temp_path_dwo_for_cgu(&self.name));
let bytecode = emit_bc.then(|| outputs.temp_path_for_cgu(OutputType::Bitcode, &self.name));
let assembly =
emit_asm.then(|| outputs.temp_path_for_cgu(OutputType::Assembly, &self.name));
let llvm_ir =
emit_ir.then(|| outputs.temp_path_for_cgu(OutputType::LlvmAssembly, &self.name));
CompiledModule {
name: self.name,
+1
View File
@@ -5,6 +5,7 @@ edition = "2024"
[dependencies]
# tidy-alphabetical-start
rand = "0.9.0"
rustc_ast = { path = "../rustc_ast" }
rustc_ast_lowering = { path = "../rustc_ast_lowering" }
rustc_ast_passes = { path = "../rustc_ast_passes" }
+10
View File
@@ -5,6 +5,7 @@
use std::sync::{Arc, OnceLock};
use std::{env, thread};
use rand::{RngCore, rng};
use rustc_ast as ast;
use rustc_attr_parsing::ShouldEmit;
use rustc_codegen_ssa::back::archive::{ArArchiveBuilderBuilder, ArchiveBuilderBuilder};
@@ -12,6 +13,7 @@
use rustc_codegen_ssa::target_features::cfg_target_feature;
use rustc_codegen_ssa::traits::CodegenBackend;
use rustc_codegen_ssa::{CompiledModules, CrateInfo, TargetConfig};
use rustc_data_structures::base_n::{CASE_INSENSITIVE, ToBaseN};
use rustc_data_structures::fx::FxIndexMap;
use rustc_data_structures::jobserver::Proxy;
use rustc_data_structures::sync;
@@ -616,6 +618,12 @@ pub fn build_output_filenames(attrs: &[ast::Attribute], sess: &Session) -> Outpu
parse_crate_name(sess, attrs, ShouldEmit::Nothing).map(|i| i.0.to_string())
});
let invocation_temp = sess
.opts
.incremental
.as_ref()
.map(|_| rng().next_u32().to_base_fixed_len(CASE_INSENSITIVE).to_string());
match sess.io.output_file {
None => {
// "-" as input file will cause the parser to read from stdin so we
@@ -632,6 +640,7 @@ pub fn build_output_filenames(attrs: &[ast::Attribute], sess: &Session) -> Outpu
stem,
None,
sess.io.temps_dir.clone(),
invocation_temp,
sess.opts.unstable_opts.split_dwarf_out_dir.clone(),
sess.opts.cg.extra_filename.clone(),
sess.opts.output_types.clone(),
@@ -662,6 +671,7 @@ pub fn build_output_filenames(attrs: &[ast::Attribute], sess: &Session) -> Outpu
out_filestem,
ofile,
sess.io.temps_dir.clone(),
invocation_temp,
sess.opts.unstable_opts.split_dwarf_out_dir.clone(),
sess.opts.cg.extra_filename.clone(),
sess.opts.output_types.clone(),
-1
View File
@@ -6,7 +6,6 @@ edition = "2024"
[dependencies]
# tidy-alphabetical-start
getopts = "0.2"
rand = "0.9.0"
rustc_abi = { path = "../rustc_abi" }
rustc_ast = { path = "../rustc_ast" }
rustc_data_structures = { path = "../rustc_data_structures" }
+22 -27
View File
@@ -1107,13 +1107,10 @@ pub fn file_for_writing(
outputs: &OutputFilenames,
flavor: OutputType,
codegen_unit_name: &str,
invocation_temp: Option<&str>,
) -> PathBuf {
match *self {
OutFileName::Real(ref path) => path.clone(),
OutFileName::Stdout => {
outputs.temp_path_for_cgu(flavor, codegen_unit_name, invocation_temp)
}
OutFileName::Stdout => outputs.temp_path_for_cgu(flavor, codegen_unit_name),
}
}
@@ -1138,6 +1135,17 @@ pub struct OutputFilenames {
filestem: String,
pub single_output_file: Option<OutFileName>,
temps_directory: Option<PathBuf>,
/// A random string generated per invocation of rustc.
///
/// This is prepended to all temporary files so that they do not collide
/// during concurrent invocations of rustc, or past invocations that were
/// preserved with a flag like `-C save-temps`, since these files may be
/// hard linked.
// This does not affect incr comp outputs, only where temp files are stored.
#[stable_hasher(ignore)]
invocation_temp: Option<String>,
explicit_dwo_out_directory: Option<PathBuf>,
pub outputs: OutputTypes,
}
@@ -1180,6 +1188,7 @@ pub fn new(
out_filestem: String,
single_output_file: Option<OutFileName>,
temps_directory: Option<PathBuf>,
invocation_temp: Option<String>,
explicit_dwo_out_directory: Option<PathBuf>,
extra: String,
outputs: OutputTypes,
@@ -1188,6 +1197,7 @@ pub fn new(
out_directory,
single_output_file,
temps_directory,
invocation_temp,
explicit_dwo_out_directory,
outputs,
crate_stem: format!("{out_crate_name}{extra}"),
@@ -1224,23 +1234,14 @@ fn output_path(&self, flavor: OutputType) -> PathBuf {
/// Gets the path where a compilation artifact of the given type for the
/// given codegen unit should be placed on disk. If codegen_unit_name is
/// None, a path distinct from those of any codegen unit will be generated.
pub fn temp_path_for_cgu(
&self,
flavor: OutputType,
codegen_unit_name: &str,
invocation_temp: Option<&str>,
) -> PathBuf {
pub fn temp_path_for_cgu(&self, flavor: OutputType, codegen_unit_name: &str) -> PathBuf {
let extension = flavor.extension();
self.temp_path_ext_for_cgu(extension, codegen_unit_name, invocation_temp)
self.temp_path_ext_for_cgu(extension, codegen_unit_name)
}
/// Like `temp_path`, but specifically for dwarf objects.
pub fn temp_path_dwo_for_cgu(
&self,
codegen_unit_name: &str,
invocation_temp: Option<&str>,
) -> PathBuf {
let p = self.temp_path_ext_for_cgu(DWARF_OBJECT_EXT, codegen_unit_name, invocation_temp);
pub fn temp_path_dwo_for_cgu(&self, codegen_unit_name: &str) -> PathBuf {
let p = self.temp_path_ext_for_cgu(DWARF_OBJECT_EXT, codegen_unit_name);
if let Some(dwo_out) = &self.explicit_dwo_out_directory {
let mut o = dwo_out.clone();
o.push(p.file_name().unwrap());
@@ -1252,16 +1253,11 @@ pub fn temp_path_dwo_for_cgu(
/// Like `temp_path`, but also supports things where there is no corresponding
/// OutputType, like noopt-bitcode or lto-bitcode.
pub fn temp_path_ext_for_cgu(
&self,
ext: &str,
codegen_unit_name: &str,
invocation_temp: Option<&str>,
) -> PathBuf {
pub fn temp_path_ext_for_cgu(&self, ext: &str, codegen_unit_name: &str) -> PathBuf {
let mut extension = codegen_unit_name.to_string();
// Append `.{invocation_temp}` to ensure temporary files are unique.
if let Some(rng) = invocation_temp {
if let Some(rng) = &self.invocation_temp {
extension.push('.');
extension.push_str(rng);
}
@@ -1302,10 +1298,9 @@ pub fn split_dwarf_path(
split_debuginfo_kind: SplitDebuginfo,
split_dwarf_kind: SplitDwarfKind,
cgu_name: &str,
invocation_temp: Option<&str>,
) -> Option<PathBuf> {
let obj_out = self.temp_path_for_cgu(OutputType::Object, cgu_name, invocation_temp);
let dwo_out = self.temp_path_dwo_for_cgu(cgu_name, invocation_temp);
let obj_out = self.temp_path_for_cgu(OutputType::Object, cgu_name);
let dwo_out = self.temp_path_dwo_for_cgu(cgu_name);
match (split_debuginfo_kind, split_dwarf_kind) {
(SplitDebuginfo::Off, SplitDwarfKind::Single | SplitDwarfKind::Split) => None,
// Single mode doesn't change how DWARF is emitted, but does add Split DWARF attributes
-16
View File
@@ -5,8 +5,6 @@
use std::sync::atomic::{AtomicBool, AtomicUsize};
use std::{env, io};
use rand::{RngCore, rng};
use rustc_data_structures::base_n::{CASE_INSENSITIVE, ToBaseN};
use rustc_data_structures::flock;
use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexSet};
use rustc_data_structures::profiling::{SelfProfiler, SelfProfilerRef};
@@ -163,14 +161,6 @@ pub struct Session {
target_filesearch: FileSearch,
host_filesearch: FileSearch,
/// A random string generated per invocation of rustc.
///
/// This is prepended to all temporary files so that they do not collide
/// during concurrent invocations of rustc, or past invocations that were
/// preserved with a flag like `-C save-temps`, since these files may be
/// hard linked.
pub invocation_temp: Option<String>,
/// The names of intrinsics that the current codegen backend replaces
/// with its own implementations.
pub replaced_intrinsics: FxHashSet<Symbol>,
@@ -1097,11 +1087,6 @@ pub fn build_session(
filesearch::FileSearch::new(&sopts.search_paths, &target_tlib_path, &target);
let host_filesearch = filesearch::FileSearch::new(&sopts.search_paths, &host_tlib_path, &host);
let invocation_temp = sopts
.incremental
.as_ref()
.map(|_| rng().next_u32().to_base_fixed_len(CASE_INSENSITIVE).to_string());
let timings = TimingSectionHandler::new(sopts.json_timings);
let sess = Session {
@@ -1132,7 +1117,6 @@ pub fn build_session(
file_depinfo: Default::default(),
target_filesearch,
host_filesearch,
invocation_temp,
replaced_intrinsics: FxHashSet::default(), // filled by `run_compiler`
thin_lto_supported: true, // filled by `run_compiler`
mir_opt_bisect_eval_count: AtomicUsize::new(0),