Skip to content
/ rust Public
forked from rust-lang/rust

Commit 5673f47

Browse files
committed
Clean up generate_lto_work.
This function has some shared code for the thin LTO and fat LTO cases, but those cases have so little in common that it's actually clearer to treat them fully separately.
1 parent d404699 commit 5673f47

File tree

1 file changed

+23
-22
lines changed
  • compiler/rustc_codegen_ssa/src/back

1 file changed

+23
-22
lines changed

compiler/rustc_codegen_ssa/src/back/write.rs

+23-22
Original file line numberDiff line numberDiff line change
@@ -380,32 +380,33 @@ fn generate_lto_work<B: ExtraBackendMethods>(
380380
) -> Vec<(WorkItem<B>, u64)> {
381381
let _prof_timer = cgcx.prof.generic_activity("codegen_generate_lto_work");
382382

383-
let (lto_modules, copy_jobs) = if !needs_fat_lto.is_empty() {
383+
if !needs_fat_lto.is_empty() {
384384
assert!(needs_thin_lto.is_empty());
385-
let lto_module =
385+
let module =
386386
B::run_fat_lto(cgcx, needs_fat_lto, import_only_modules).unwrap_or_else(|e| e.raise());
387-
(vec![lto_module], vec![])
387+
// We are adding a single work item, so the cost doesn't matter.
388+
vec![(WorkItem::LTO(module), 0)]
388389
} else {
389390
assert!(needs_fat_lto.is_empty());
390-
B::run_thin_lto(cgcx, needs_thin_lto, import_only_modules).unwrap_or_else(|e| e.raise())
391-
};
392-
393-
lto_modules
394-
.into_iter()
395-
.map(|module| {
396-
let cost = module.cost();
397-
(WorkItem::LTO(module), cost)
398-
})
399-
.chain(copy_jobs.into_iter().map(|wp| {
400-
(
401-
WorkItem::CopyPostLtoArtifacts(CachedModuleCodegen {
402-
name: wp.cgu_name.clone(),
403-
source: wp,
404-
}),
405-
0,
406-
)
407-
}))
408-
.collect()
391+
let (lto_modules, copy_jobs) = B::run_thin_lto(cgcx, needs_thin_lto, import_only_modules)
392+
.unwrap_or_else(|e| e.raise());
393+
lto_modules
394+
.into_iter()
395+
.map(|module| {
396+
let cost = module.cost();
397+
(WorkItem::LTO(module), cost)
398+
})
399+
.chain(copy_jobs.into_iter().map(|wp| {
400+
(
401+
WorkItem::CopyPostLtoArtifacts(CachedModuleCodegen {
402+
name: wp.cgu_name.clone(),
403+
source: wp,
404+
}),
405+
0, // copying is very cheap
406+
)
407+
}))
408+
.collect()
409+
}
409410
}
410411

411412
pub struct CompiledModules {

0 commit comments

Comments
 (0)