diff options
| author | Yuki Okushi <jtitor@2k36.org> | 2022-05-05 10:20:38 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-05 10:20:38 +0900 |
| commit | ade123275db92898b13faffea08893f0a6737ff4 (patch) | |
| tree | 9b18b5c05a5673bf00548c5b7e9d011fbaa39f4f | |
| parent | e3ada27d7d95cdc4e3c05b91c2cf404546c2d7fd (diff) | |
| parent | 0d5a738b8b715024c25c4ad973399f2e81b7577b (diff) | |
| download | rust-ade123275db92898b13faffea08893f0a6737ff4.tar.gz rust-ade123275db92898b13faffea08893f0a6737ff4.zip | |
Rollup merge of #96697 - oli-obk:trace_queries, r=michaelwoerister
Enable tracing for all queries
This allows you to log everything within a specific query, e.g.
```
env RUSTC_LOG=[mir_borrowck]
```
dumping all borrowck queries may be a bit verbose, so you can also restrict it to just an item of your choice:
```
env RUSTC_LOG=[mir_borrowck{key=\.\*name_of_item\.\*}]
```
the regex `.*` in the key name are because the key is a debug printed DefId, so you'd get all kinds of things like hashes in there. The tracing logs will show you the key, so you can restrict it further if you want.
| -rw-r--r-- | Cargo.lock | 1 | ||||
| -rw-r--r-- | compiler/rustc_query_impl/Cargo.toml | 1 | ||||
| -rw-r--r-- | compiler/rustc_query_impl/src/plumbing.rs | 3 | ||||
| -rw-r--r-- | compiler/rustc_query_system/src/query/plumbing.rs | 2 |
4 files changed, 6 insertions, 1 deletions
diff --git a/Cargo.lock b/Cargo.lock index 4bc35ee5a0c..417f3300f0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4245,6 +4245,7 @@ dependencies = [ "rustc_serialize", "rustc_session", "rustc_span", + "tracing", ] [[package]] diff --git a/compiler/rustc_query_impl/Cargo.toml b/compiler/rustc_query_impl/Cargo.toml index b7502c4b1e2..fa05434e48b 100644 --- a/compiler/rustc_query_impl/Cargo.toml +++ b/compiler/rustc_query_impl/Cargo.toml @@ -20,6 +20,7 @@ rustc_query_system = { path = "../rustc_query_system" } rustc_serialize = { path = "../rustc_serialize" } rustc_session = { path = "../rustc_session" } rustc_span = { path = "../rustc_span" } +tracing = "0.1" [features] rustc_use_parallel_compiler = ["rustc-rayon-core", "rustc_query_system/rustc_use_parallel_compiler"] diff --git a/compiler/rustc_query_impl/src/plumbing.rs b/compiler/rustc_query_impl/src/plumbing.rs index bc82b0053b9..ae4ad428159 100644 --- a/compiler/rustc_query_impl/src/plumbing.rs +++ b/compiler/rustc_query_impl/src/plumbing.rs @@ -435,6 +435,8 @@ macro_rules! define_queries { fn force_from_dep_node(tcx: TyCtxt<'_>, dep_node: DepNode) -> bool { if let Some(key) = recover(tcx, dep_node) { + #[cfg(debug_assertions)] + let _guard = tracing::span!(tracing::Level::TRACE, stringify!($name), ?key).entered(); let tcx = QueryCtxt::from_tcx(tcx); force_query::<queries::$name<'_>, _>(tcx, key, dep_node); true @@ -532,6 +534,7 @@ macro_rules! define_queries_struct { $($(#[$attr])* #[inline(always)] + #[tracing::instrument(level = "trace", skip(self, tcx))] fn $name( &'tcx self, tcx: TyCtxt<$tcx>, diff --git a/compiler/rustc_query_system/src/query/plumbing.rs b/compiler/rustc_query_system/src/query/plumbing.rs index 700290d67a4..3498df95196 100644 --- a/compiler/rustc_query_system/src/query/plumbing.rs +++ b/compiler/rustc_query_system/src/query/plumbing.rs @@ -675,6 +675,7 @@ where } } +#[derive(Debug)] pub enum QueryMode { Get, Ensure, @@ -697,7 +698,6 @@ where None }; - debug!("ty::query::get_query<{}>(key={:?}, span={:?})", Q::NAME, key, span); let (result, dep_node_index) = try_execute_query( tcx, Q::query_state(tcx), |
