Skip to content

Commit c404ce6

Browse files
committed
Auto merge of #67988 - Zoxc:prof-fix, r=michaelwoerister
Change -Z time event naming scheme and make them generic activities I made the `-Z time-passes` only events (which encodes argument in the event id) use a `extra_verbose_generic_activity` function which does not emit self-profiling events. r? @michaelwoerister cc @wesleywiser
2 parents adc6572 + 7db4b7e commit c404ce6

File tree

21 files changed

+209
-238
lines changed

21 files changed

+209
-238
lines changed

src/librustc/hir/map/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1270,7 +1270,7 @@ pub fn map_crate<'hir>(
12701270
definitions,
12711271
};
12721272

1273-
sess.time("validate HIR map", || {
1273+
sess.time("validate_HIR_map", || {
12741274
hir_id_validator::check_crate(&map);
12751275
});
12761276

src/librustc/ty/query/on_disk_cache.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ impl<'sess> OnDiskCache<'sess> {
198198
// Encode query results.
199199
let mut query_result_index = EncodedQueryResultIndex::new();
200200

201-
tcx.sess.time("encode query results", || {
201+
tcx.sess.time("encode_query_results", || {
202202
let enc = &mut encoder;
203203
let qri = &mut query_result_index;
204204

@@ -1053,8 +1053,8 @@ where
10531053
Q: super::config::QueryDescription<'tcx, Value: Encodable>,
10541054
E: 'a + TyEncoder,
10551055
{
1056-
let desc = &format!("encode_query_results for {}", ::std::any::type_name::<Q>());
1057-
let _timer = tcx.sess.prof.generic_pass(desc);
1056+
let desc = &format!("encode_query_results_for_{}", ::std::any::type_name::<Q>());
1057+
let _timer = tcx.sess.prof.extra_verbose_generic_activity(desc);
10581058

10591059
let shards = Q::query_cache(tcx).lock_shards();
10601060
assert!(shards.iter().all(|shard| shard.active.is_empty()));

src/librustc_codegen_llvm/back/lto.rs

+8-6
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,13 @@ fn prepare_lto(
120120
info!("adding bytecode {}", name);
121121
let bc_encoded = data.data();
122122

123-
let (bc, id) = cgcx.prof.generic_pass(&format!("decode {}", name)).run(|| {
124-
match DecodedBytecode::new(bc_encoded) {
123+
let (bc, id) = cgcx
124+
.prof
125+
.extra_verbose_generic_activity(&format!("decode {}", name))
126+
.run(|| match DecodedBytecode::new(bc_encoded) {
125127
Ok(b) => Ok((b.bytecode(), b.identifier().to_string())),
126128
Err(e) => Err(diag_handler.fatal(&e)),
127-
}
128-
})?;
129+
})?;
129130
let bc = SerializedModule::FromRlib(bc);
130131
upstream_modules.push((bc, CString::new(id).unwrap()));
131132
}
@@ -280,8 +281,9 @@ fn fat_lto(
280281
// save and persist everything with the original module.
281282
let mut linker = Linker::new(llmod);
282283
for (bc_decoded, name) in serialized_modules {
284+
let _timer = cgcx.prof.generic_activity("LLVM_fat_lto_link_module");
283285
info!("linking {:?}", name);
284-
cgcx.prof.generic_pass(&format!("ll link {:?}", name)).run(|| {
286+
cgcx.prof.extra_verbose_generic_activity(&format!("ll link {:?}", name)).run(|| {
285287
let data = bc_decoded.data();
286288
linker.add(&data).map_err(|()| {
287289
let msg = format!("failed to load bc of {:?}", name);
@@ -633,7 +635,7 @@ pub(crate) fn run_pass_manager(
633635
}
634636

635637
cgcx.prof
636-
.generic_pass("LTO passes")
638+
.extra_verbose_generic_activity("LTO_passes")
637639
.run(|| llvm::LLVMRunPassManager(pm, module.module_llvm.llmod()));
638640

639641
llvm::LLVMDisposePassManager(pm);

src/librustc_codegen_llvm/back/write.rs

+17-3
Original file line numberDiff line numberDiff line change
@@ -424,13 +424,23 @@ pub(crate) unsafe fn optimize(
424424

425425
// Finally, run the actual optimization passes
426426
{
427+
let _timer = cgcx.prof.generic_activity("LLVM_module_optimize_function_passes");
427428
let desc = &format!("llvm function passes [{}]", module_name.unwrap());
428-
let _timer = if config.time_module { Some(cgcx.prof.generic_pass(desc)) } else { None };
429+
let _timer = if config.time_module {
430+
Some(cgcx.prof.extra_verbose_generic_activity(desc))
431+
} else {
432+
None
433+
};
429434
llvm::LLVMRustRunFunctionPassManager(fpm, llmod);
430435
}
431436
{
437+
let _timer = cgcx.prof.generic_activity("LLVM_module_optimize_module_passes");
432438
let desc = &format!("llvm module passes [{}]", module_name.unwrap());
433-
let _timer = if config.time_module { Some(cgcx.prof.generic_pass(desc)) } else { None };
439+
let _timer = if config.time_module {
440+
Some(cgcx.prof.extra_verbose_generic_activity(desc))
441+
} else {
442+
None
443+
};
434444
llvm::LLVMRunPassManager(mpm, llmod);
435445
}
436446

@@ -556,7 +566,11 @@ pub(crate) unsafe fn codegen(
556566

557567
{
558568
let desc = &format!("codegen passes [{}]", module_name.unwrap());
559-
let _timer = if config.time_module { Some(cgcx.prof.generic_pass(desc)) } else { None };
569+
let _timer = if config.time_module {
570+
Some(cgcx.prof.extra_verbose_generic_activity(desc))
571+
} else {
572+
None
573+
};
560574

561575
if config.emit_ir {
562576
let _timer = cgcx.prof.generic_activity("LLVM_module_codegen_emit_ir");

src/librustc_codegen_llvm/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ impl CodegenBackend for LlvmCodegenBackend {
283283
rustc_codegen_ssa::back::write::dump_incremental_data(&codegen_results);
284284
}
285285

286-
sess.time("serialize work products", move || {
286+
sess.time("serialize_work_products", move || {
287287
rustc_incremental::save_work_product_index(sess, &dep_graph, work_products)
288288
});
289289

@@ -300,7 +300,7 @@ impl CodegenBackend for LlvmCodegenBackend {
300300

301301
// Run the linker on any artifacts that resulted from the LLVM run.
302302
// This should produce either a finished executable or library.
303-
sess.time("linking", || {
303+
sess.time("link_crate", || {
304304
use crate::back::archive::LlvmArchiveBuilder;
305305
use rustc_codegen_ssa::back::link::link_binary;
306306

src/librustc_codegen_ssa/back/link.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -577,7 +577,7 @@ fn link_natively<'a, B: ArchiveBuilder<'a>>(
577577
let mut i = 0;
578578
loop {
579579
i += 1;
580-
prog = sess.time("running linker", || exec_linker(sess, &mut cmd, out_filename, tmpdir));
580+
prog = sess.time("run_linker", || exec_linker(sess, &mut cmd, out_filename, tmpdir));
581581
let output = match prog {
582582
Ok(ref output) => output,
583583
Err(_) => break,
@@ -1562,7 +1562,7 @@ fn add_upstream_rust_crates<'a, B: ArchiveBuilder<'a>>(
15621562
let name = cratepath.file_name().unwrap().to_str().unwrap();
15631563
let name = &name[3..name.len() - 5]; // chop off lib/.rlib
15641564

1565-
sess.prof.generic_pass(&format!("altering {}.rlib", name)).run(|| {
1565+
sess.prof.extra_verbose_generic_activity(&format!("altering {}.rlib", name)).run(|| {
15661566
let mut archive = <B as ArchiveBuilder>::new(sess, &dst, Some(cratepath));
15671567
archive.update_symbols();
15681568

src/librustc_codegen_ssa/back/write.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1511,7 +1511,7 @@ fn start_executing_work<B: ExtraBackendMethods>(
15111511
llvm_start_time: &mut Option<VerboseTimingGuard<'a>>,
15121512
) {
15131513
if config.time_module && llvm_start_time.is_none() {
1514-
*llvm_start_time = Some(prof.generic_pass("LLVM passes"));
1514+
*llvm_start_time = Some(prof.extra_verbose_generic_activity("LLVM_passes"));
15151515
}
15161516
}
15171517
}

src/librustc_codegen_ssa/base.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ pub fn codegen_crate<B: ExtraBackendMethods>(
566566
cgu_name_builder.build_cgu_name(LOCAL_CRATE, &["crate"], Some("allocator")).to_string();
567567
let mut modules = backend.new_metadata(tcx, &llmod_id);
568568
tcx.sess
569-
.time("write allocator module", || backend.codegen_allocator(tcx, &mut modules, kind));
569+
.time("write_allocator_module", || backend.codegen_allocator(tcx, &mut modules, kind));
570570

571571
Some(ModuleCodegen { name: llmod_id, module_llvm: modules, kind: ModuleKind::Allocator })
572572
} else {
@@ -582,7 +582,7 @@ pub fn codegen_crate<B: ExtraBackendMethods>(
582582
let metadata_cgu_name =
583583
cgu_name_builder.build_cgu_name(LOCAL_CRATE, &["crate"], Some("metadata")).to_string();
584584
let mut metadata_llvm_module = backend.new_metadata(tcx, &metadata_cgu_name);
585-
tcx.sess.time("write compressed metadata", || {
585+
tcx.sess.time("write_compressed_metadata", || {
586586
backend.write_compressed_metadata(
587587
tcx,
588588
&ongoing_codegen.metadata,
@@ -652,7 +652,7 @@ pub fn codegen_crate<B: ExtraBackendMethods>(
652652

653653
// Since the main thread is sometimes blocked during codegen, we keep track
654654
// -Ztime-passes output manually.
655-
print_time_passes_entry(tcx.sess.time_passes(), "codegen to LLVM IR", total_codegen_time);
655+
print_time_passes_entry(tcx.sess.time_passes(), "codegen_to_LLVM_IR", total_codegen_time);
656656

657657
::rustc_incremental::assert_module_sources::assert_module_sources(tcx);
658658

@@ -712,9 +712,9 @@ impl<B: ExtraBackendMethods> Drop for AbortCodegenOnDrop<B> {
712712
}
713713

714714
fn assert_and_save_dep_graph(tcx: TyCtxt<'_>) {
715-
tcx.sess.time("assert dep graph", || ::rustc_incremental::assert_dep_graph(tcx));
715+
tcx.sess.time("assert_dep_graph", || ::rustc_incremental::assert_dep_graph(tcx));
716716

717-
tcx.sess.time("serialize dep graph", || ::rustc_incremental::save_dep_graph(tcx));
717+
tcx.sess.time("serialize_dep_graph", || ::rustc_incremental::save_dep_graph(tcx));
718718
}
719719

720720
impl CrateInfo {

0 commit comments

Comments
 (0)