From c0d0ce95ebdab2817b2b6240f802b5814a1dfcfe Mon Sep 17 00:00:00 2001 From: Jack Wrenn Date: Thu, 21 Jul 2022 17:28:24 +0000 Subject: [PATCH] safe transmute: tweak tracing ref: https://github.com/rust-lang/rust/pull/92268#discussion_r925246903 ref: https://github.com/rust-lang/rust/pull/92268#discussion_r925250811 ref: https://github.com/rust-lang/rust/pull/92268#discussion_r925255782 --- compiler/rustc_transmute/src/layout/dfa.rs | 2 +- compiler/rustc_transmute/src/layout/tree.rs | 16 ++++------------ compiler/rustc_transmute/src/lib.rs | 3 +++ .../src/maybe_transmutable/mod.rs | 12 ++++++------ .../src/maybe_transmutable/query_context.rs | 4 ++-- 5 files changed, 16 insertions(+), 21 deletions(-) diff --git a/compiler/rustc_transmute/src/layout/dfa.rs b/compiler/rustc_transmute/src/layout/dfa.rs index cdd3195712d..f2742dc8ee5 100644 --- a/compiler/rustc_transmute/src/layout/dfa.rs +++ b/compiler/rustc_transmute/src/layout/dfa.rs @@ -103,7 +103,7 @@ where Self { transitions, start, accepting } } - #[tracing::instrument] + #[instrument(level = "DEBUG")] #[cfg_attr(feature = "rustc", allow(rustc::potential_query_instability))] pub(crate) fn from_nfa(nfa: Nfa) -> Self { let Nfa { transitions: nfa_transitions, start: nfa_start, accepting: nfa_accepting } = nfa; diff --git a/compiler/rustc_transmute/src/layout/tree.rs b/compiler/rustc_transmute/src/layout/tree.rs index 67b401855d4..70b3ba02b05 100644 --- a/compiler/rustc_transmute/src/layout/tree.rs +++ b/compiler/rustc_transmute/src/layout/tree.rs @@ -76,7 +76,6 @@ where } /// A `Tree` whose layout is entirely padding of the given width. - #[tracing::instrument] pub(crate) fn padding(width_in_bytes: usize) -> Self { Self::Seq(vec![Self::uninit(); width_in_bytes]) } @@ -316,10 +315,7 @@ pub(crate) mod rustc { tcx, )?, AdtKind::Enum => { - tracing::trace!( - adt_def = ?adt_def, - "treeifying enum" - ); + tracing::trace!(?adt_def, "treeifying enum"); let mut tree = Tree::uninhabited(); for (idx, discr) in adt_def.discriminants(tcx) { @@ -398,13 +394,13 @@ pub(crate) mod rustc { // The layout of the variant is prefixed by the discriminant, if any. if let Some(discr) = discr { - tracing::trace!(discr = ?discr, "treeifying discriminant"); + tracing::trace!(?discr, "treeifying discriminant"); let discr_layout = alloc::Layout::from_size_align( layout_summary.discriminant_size, clamp(layout_summary.discriminant_align), ) .unwrap(); - tracing::trace!(discr_layout = ?discr_layout, "computed discriminant layout"); + tracing::trace!(?discr_layout, "computed discriminant layout"); variant_layout = variant_layout.extend(discr_layout).unwrap().0; tree = tree.then(Self::from_disr(discr, tcx, layout_summary.discriminant_size)); } @@ -469,11 +465,7 @@ pub(crate) mod rustc { layout.align().abi.bytes().try_into().unwrap(), ) .unwrap(); - tracing::trace!( - ty = ?ty, - layout = ?layout, - "computed layout for type" - ); + tracing::trace!(?ty, ?layout, "computed layout for type"); Ok(layout) } } diff --git a/compiler/rustc_transmute/src/lib.rs b/compiler/rustc_transmute/src/lib.rs index 9f7508fdd71..cfc7c752a6b 100644 --- a/compiler/rustc_transmute/src/lib.rs +++ b/compiler/rustc_transmute/src/lib.rs @@ -8,6 +8,9 @@ )] #![allow(dead_code, unused_variables)] +#[macro_use] +extern crate tracing; + #[cfg(feature = "rustc")] pub(crate) use rustc_data_structures::fx::{FxHashMap as Map, FxHashSet as Set}; diff --git a/compiler/rustc_transmute/src/maybe_transmutable/mod.rs b/compiler/rustc_transmute/src/maybe_transmutable/mod.rs index ef3852001a8..8fb85527a0f 100644 --- a/compiler/rustc_transmute/src/maybe_transmutable/mod.rs +++ b/compiler/rustc_transmute/src/maybe_transmutable/mod.rs @@ -64,7 +64,7 @@ mod rustc { impl<'tcx> MaybeTransmutableQuery, TyCtxt<'tcx>> { /// This method begins by converting `src` and `dst` from `Ty`s to `Tree`s, /// then computes an answer using those trees. - #[tracing::instrument(skip(self), fields(src = ?self.src, dst = ?self.dst))] + #[instrument(level = "DEBUG", skip(self), fields(src = ?self.src, dst = ?self.dst))] pub fn answer(self) -> Answer< as QueryContext>::Ref> { let query_or_answer = self.map_layouts(|src, dst, scope, &context| { // Convert `src` and `dst` from their rustc representations, to `Tree`-based @@ -103,14 +103,14 @@ where /// This method begins by de-def'ing `src` and `dst`, and prunes private paths from `dst`, /// then converts `src` and `dst` to `Nfa`s, and computes an answer using those NFAs. #[inline(always)] - #[tracing::instrument(skip(self), fields(src = ?self.src, dst = ?self.dst))] + #[instrument(level = "DEBUG", skip(self), fields(src = ?self.src, dst = ?self.dst))] pub(crate) fn answer(self) -> Answer<::Ref> { let assume_visibility = self.assume.visibility; let query_or_answer = self.map_layouts(|src, dst, scope, context| { // Remove all `Def` nodes from `src`, without checking their visibility. let src = src.prune(&|def| true); - tracing::trace!(src = ?src, "pruned src"); + tracing::trace!(?src, "pruned src"); // Remove all `Def` nodes from `dst`, additionally... let dst = if assume_visibility { @@ -121,7 +121,7 @@ where dst.prune(&|def| context.is_accessible_from(def, scope)) }; - tracing::trace!(dst = ?dst, "pruned dst"); + tracing::trace!(?dst, "pruned dst"); // Convert `src` from a tree-based representation to an NFA-based representation. // If the conversion fails because `src` is uninhabited, conclude that the transmutation @@ -152,7 +152,7 @@ where /// /// This method converts `src` and `dst` to DFAs, then computes an answer using those DFAs. #[inline(always)] - #[tracing::instrument(skip(self), fields(src = ?self.src, dst = ?self.dst))] + #[instrument(level = "DEBUG", skip(self), fields(src = ?self.src, dst = ?self.dst))] pub(crate) fn answer(self) -> Answer<::Ref> { let query_or_answer = self .map_layouts(|src, dst, scope, context| Ok((Dfa::from_nfa(src), Dfa::from_nfa(dst)))); @@ -192,7 +192,7 @@ where } #[inline(always)] - #[tracing::instrument(skip(self))] + #[instrument(level = "DEBUG", skip(self))] fn answer_memo( &self, cache: &mut Map<(dfa::State, dfa::State), Answer<::Ref>>, diff --git a/compiler/rustc_transmute/src/maybe_transmutable/query_context.rs b/compiler/rustc_transmute/src/maybe_transmutable/query_context.rs index ab9bcd232f0..1a66b6cfe00 100644 --- a/compiler/rustc_transmute/src/maybe_transmutable/query_context.rs +++ b/compiler/rustc_transmute/src/maybe_transmutable/query_context.rs @@ -52,7 +52,7 @@ mod rustc { type Scope = Ty<'tcx>; - #[tracing::instrument(skip(self))] + #[instrument(level = "DEBUG", skip(self))] fn is_accessible_from(&self, def: Self::Def, scope: Self::Scope) -> bool { use layout::rustc::Def; use rustc_middle::ty; @@ -82,7 +82,7 @@ mod rustc { false }; - tracing::trace!(ret = ?ret, "ret"); + tracing::trace!(?ret, "ret"); ret }