summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src
diff options
context:
space:
mode:
authorJohn Kåre Alsaker <john.kare.alsaker@gmail.com>2023-09-13 13:05:15 +0200
committerJohn Kåre Alsaker <john.kare.alsaker@gmail.com>2023-09-13 13:41:19 +0200
commit9624c30965d768527efd3ca5f52904fb5e763587 (patch)
tree7ad1468593180ca2989f0d35036a38188dbeff9f /compiler/rustc_mir_transform/src
parentf742d8832601080df1ae56c6469da18a917e1f60 (diff)
downloadrust-9624c30965d768527efd3ca5f52904fb5e763587.tar.gz
rust-9624c30965d768527efd3ca5f52904fb5e763587.zip
Generate MIR pass names for profiling on the fly and pass the body DefId as argument
Diffstat (limited to 'compiler/rustc_mir_transform/src')
-rw-r--r--compiler/rustc_mir_transform/src/pass_manager.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/compiler/rustc_mir_transform/src/pass_manager.rs b/compiler/rustc_mir_transform/src/pass_manager.rs
index 0aba1bc9685..5abb2f3d041 100644
--- a/compiler/rustc_mir_transform/src/pass_manager.rs
+++ b/compiler/rustc_mir_transform/src/pass_manager.rs
@@ -94,6 +94,8 @@ fn run_passes_inner<'tcx>(
     let overridden_passes = &tcx.sess.opts.unstable_opts.mir_enable_passes;
     trace!(?overridden_passes);
 
+    let prof_arg = tcx.sess.prof.enabled().then(|| format!("{:?}", body.source.def_id()));
+
     if !body.should_skip() {
         for pass in passes {
             let name = pass.name();
@@ -121,10 +123,14 @@ fn run_passes_inner<'tcx>(
                 validate_body(tcx, body, format!("before pass {name}"));
             }
 
-            tcx.sess
-                .prof
-                .generic_activity_with_arg("mir_pass", name)
-                .run(|| pass.run_pass(tcx, body));
+            if let Some(prof_arg) = &prof_arg {
+                tcx.sess
+                    .prof
+                    .generic_activity_with_arg(pass.profiler_name(), &**prof_arg)
+                    .run(|| pass.run_pass(tcx, body));
+            } else {
+                pass.run_pass(tcx, body);
+            }
 
             if dump_enabled {
                 dump_mir_for_pass(tcx, body, &name, true);