Simplify temp path creation a bit
This commit is contained in:
parent
e643f59f6d
commit
effef88ac7
13 changed files with 70 additions and 92 deletions
|
@ -119,14 +119,14 @@ pub(crate) fn create_target_machine(tcx: TyCtxt<'_>, mod_name: &str) -> OwnedTar
|
|||
tcx.output_filenames(()).split_dwarf_path(
|
||||
tcx.sess.split_debuginfo(),
|
||||
tcx.sess.opts.unstable_opts.split_dwarf_kind,
|
||||
Some(mod_name),
|
||||
mod_name,
|
||||
)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let output_obj_file =
|
||||
Some(tcx.output_filenames(()).temp_path(OutputType::Object, Some(mod_name)));
|
||||
Some(tcx.output_filenames(()).temp_path_for_cgu(OutputType::Object, mod_name));
|
||||
let config = TargetMachineFactoryConfig { split_dwarf_file, output_obj_file };
|
||||
|
||||
target_machine_factory(
|
||||
|
@ -330,8 +330,7 @@ pub(crate) fn save_temp_bitcode(
|
|||
return;
|
||||
}
|
||||
let ext = format!("{name}.bc");
|
||||
let cgu = Some(&module.name[..]);
|
||||
let path = cgcx.output_filenames.temp_path_ext(&ext, cgu);
|
||||
let path = cgcx.output_filenames.temp_path_ext_for_cgu(&ext, &module.name);
|
||||
write_bitcode_to_file(module, &path)
|
||||
}
|
||||
|
||||
|
@ -694,11 +693,8 @@ pub(crate) unsafe fn optimize(
|
|||
let llcx = &*module.module_llvm.llcx;
|
||||
let _handlers = DiagnosticHandlers::new(cgcx, dcx, llcx, module, CodegenDiagnosticsStage::Opt);
|
||||
|
||||
let module_name = module.name.clone();
|
||||
let module_name = Some(&module_name[..]);
|
||||
|
||||
if config.emit_no_opt_bc {
|
||||
let out = cgcx.output_filenames.temp_path_ext("no-opt.bc", module_name);
|
||||
let out = cgcx.output_filenames.temp_path_ext_for_cgu("no-opt.bc", &module.name);
|
||||
write_bitcode_to_file(module, &out)
|
||||
}
|
||||
|
||||
|
@ -744,7 +740,7 @@ pub(crate) unsafe fn optimize(
|
|||
let thin_lto_buffer = unsafe { ThinBuffer::from_raw_ptr(thin_lto_buffer) };
|
||||
module.thin_lto_buffer = Some(thin_lto_buffer.data().to_vec());
|
||||
let bc_summary_out =
|
||||
cgcx.output_filenames.temp_path(OutputType::ThinLinkBitcode, module_name);
|
||||
cgcx.output_filenames.temp_path_for_cgu(OutputType::ThinLinkBitcode, &module.name);
|
||||
if config.emit_thin_lto_summary
|
||||
&& let Some(thin_link_bitcode_filename) = bc_summary_out.file_name()
|
||||
{
|
||||
|
@ -801,8 +797,6 @@ pub(crate) unsafe fn codegen(
|
|||
let llmod = module.module_llvm.llmod();
|
||||
let llcx = &*module.module_llvm.llcx;
|
||||
let tm = &*module.module_llvm.tm;
|
||||
let module_name = module.name.clone();
|
||||
let module_name = Some(&module_name[..]);
|
||||
let _handlers =
|
||||
DiagnosticHandlers::new(cgcx, dcx, llcx, &module, CodegenDiagnosticsStage::Codegen);
|
||||
|
||||
|
@ -814,8 +808,8 @@ pub(crate) unsafe 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(OutputType::Bitcode, module_name);
|
||||
let obj_out = cgcx.output_filenames.temp_path(OutputType::Object, module_name);
|
||||
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 {
|
||||
|
@ -857,7 +851,8 @@ pub(crate) unsafe fn codegen(
|
|||
if config.emit_ir {
|
||||
let _timer =
|
||||
cgcx.prof.generic_activity_with_arg("LLVM_module_codegen_emit_ir", &*module.name);
|
||||
let out = cgcx.output_filenames.temp_path(OutputType::LlvmAssembly, module_name);
|
||||
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(
|
||||
|
@ -899,7 +894,7 @@ pub(crate) unsafe fn codegen(
|
|||
if config.emit_asm {
|
||||
let _timer =
|
||||
cgcx.prof.generic_activity_with_arg("LLVM_module_codegen_emit_asm", &*module.name);
|
||||
let path = cgcx.output_filenames.temp_path(OutputType::Assembly, module_name);
|
||||
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
|
||||
|
@ -929,7 +924,7 @@ pub(crate) unsafe fn codegen(
|
|||
.prof
|
||||
.generic_activity_with_arg("LLVM_module_codegen_emit_obj", &*module.name);
|
||||
|
||||
let dwo_out = cgcx.output_filenames.temp_path_dwo(module_name);
|
||||
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,
|
||||
|
|
|
@ -910,7 +910,7 @@ pub(crate) fn build_compile_unit_di_node<'ll, 'tcx>(
|
|||
&& let Some(f) = output_filenames.split_dwarf_path(
|
||||
tcx.sess.split_debuginfo(),
|
||||
tcx.sess.opts.unstable_opts.split_dwarf_kind,
|
||||
Some(codegen_unit_name),
|
||||
codegen_unit_name,
|
||||
) {
|
||||
// We get a path relative to the working directory from split_dwarf_path
|
||||
Some(tcx.sess.source_map().path_mapping().to_real_filename(f))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue