about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonas Schievink <jonasschievink@gmail.com>2021-01-23 20:16:09 +0100
committerGitHub <noreply@github.com>2021-01-23 20:16:09 +0100
commit7038bb1eb2244a831604177c36c7108a92c19a63 (patch)
tree0d9d7fa892422f0b70f03b7d4bf44bd40fd43364
parentfcf11296f67aa2c648e2e3c9b3bf446912c49fdc (diff)
parent5f74ab49694a8622afd44c24021b44239573402d (diff)
downloadrust-7038bb1eb2244a831604177c36c7108a92c19a63.tar.gz
rust-7038bb1eb2244a831604177c36c7108a92c19a63.zip
Rollup merge of #81252 - jyn514:resolve-timing, r=petrochenkov
Add more self-profile info to rustc_resolve

The idea is to help me find out where the time is being spent in compiling the docs for `windows-rs`: https://github.com/microsoft/windows-rs/issues/420#issuecomment-764991646
-rw-r--r--compiler/rustc_resolve/src/lib.rs18
1 files changed, 8 insertions, 10 deletions
diff --git a/compiler/rustc_resolve/src/lib.rs b/compiler/rustc_resolve/src/lib.rs
index d293899dc0c..2b4a1d9e3fa 100644
--- a/compiler/rustc_resolve/src/lib.rs
+++ b/compiler/rustc_resolve/src/lib.rs
@@ -1465,16 +1465,14 @@ impl<'a> Resolver<'a> {
 
     /// Entry point to crate resolution.
     pub fn resolve_crate(&mut self, krate: &Crate) {
-        let _prof_timer = self.session.prof.generic_activity("resolve_crate");
-
-        ImportResolver { r: self }.finalize_imports();
-        self.finalize_macro_resolutions();
-
-        self.late_resolve_crate(krate);
-
-        self.check_unused(krate);
-        self.report_errors(krate);
-        self.crate_loader.postprocess(krate);
+        self.session.time("resolve_crate", || {
+            self.session.time("finalize_imports", || ImportResolver { r: self }.finalize_imports());
+            self.session.time("finalize_macro_resolutions", || self.finalize_macro_resolutions());
+            self.session.time("late_resolve_crate", || self.late_resolve_crate(krate));
+            self.session.time("resolve_check_unused", || self.check_unused(krate));
+            self.session.time("resolve_report_errors", || self.report_errors(krate));
+            self.session.time("resolve_postprocess", || self.crate_loader.postprocess(krate));
+        });
     }
 
     pub fn traits_in_scope(