Skip to content

Commit 708dc15

Browse files
committed
Add InterpCx::layout_of with tracing, shadowing LayoutOf
1 parent 5e10828 commit 708dc15

32 files changed

+30
-32
lines changed

compiler/rustc_const_eval/src/const_eval/eval_queries.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use rustc_hir::def::DefKind;
77
use rustc_middle::mir::interpret::{AllocId, ErrorHandled, InterpErrorInfo, ReportedErrorInfo};
88
use rustc_middle::mir::{self, ConstAlloc, ConstValue};
99
use rustc_middle::query::TyCtxtAt;
10-
use rustc_middle::ty::layout::{HasTypingEnv, LayoutOf};
10+
use rustc_middle::ty::layout::HasTypingEnv;
1111
use rustc_middle::ty::print::with_no_trimmed_paths;
1212
use rustc_middle::ty::{self, Ty, TyCtxt};
1313
use rustc_middle::{bug, throw_inval};

compiler/rustc_const_eval/src/const_eval/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
use rustc_abi::{FieldIdx, VariantIdx};
44
use rustc_middle::query::Key;
5-
use rustc_middle::ty::layout::LayoutOf;
65
use rustc_middle::ty::{self, Ty, TyCtxt};
76
use rustc_middle::{bug, mir};
87
use tracing::instrument;

compiler/rustc_const_eval/src/const_eval/valtrees.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use rustc_abi::{BackendRepr, FieldIdx, VariantIdx};
22
use rustc_data_structures::stack::ensure_sufficient_stack;
33
use rustc_middle::mir::interpret::{EvalToValTreeResult, GlobalId, ValTreeCreationError};
4-
use rustc_middle::ty::layout::{LayoutCx, LayoutOf, TyAndLayout};
4+
use rustc_middle::ty::layout::{LayoutCx, TyAndLayout};
55
use rustc_middle::ty::{self, Ty, TyCtxt};
66
use rustc_middle::{bug, mir};
77
use rustc_span::DUMMY_SP;

compiler/rustc_const_eval/src/interpret/call.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::borrow::Cow;
66
use either::{Left, Right};
77
use rustc_abi::{self as abi, ExternAbi, FieldIdx, Integer, VariantIdx};
88
use rustc_hir::def_id::DefId;
9-
use rustc_middle::ty::layout::{FnAbiOf, IntegerExt, LayoutOf, TyAndLayout};
9+
use rustc_middle::ty::layout::{FnAbiOf, IntegerExt, TyAndLayout};
1010
use rustc_middle::ty::{self, AdtDef, Instance, Ty, VariantDef};
1111
use rustc_middle::{bug, mir, span_bug};
1212
use rustc_span::sym;

compiler/rustc_const_eval/src/interpret/cast.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use rustc_apfloat::{Float, FloatConvert};
66
use rustc_middle::mir::CastKind;
77
use rustc_middle::mir::interpret::{InterpResult, PointerArithmetic, Scalar};
88
use rustc_middle::ty::adjustment::PointerCoercion;
9-
use rustc_middle::ty::layout::{IntegerExt, LayoutOf, TyAndLayout};
9+
use rustc_middle::ty::layout::{IntegerExt, TyAndLayout};
1010
use rustc_middle::ty::{self, FloatTy, Ty};
1111
use rustc_middle::{bug, span_bug};
1212
use tracing::trace;

compiler/rustc_const_eval/src/interpret/discriminant.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! Functions for reading and writing discriminants of multi-variant layouts (enums and coroutines).
22
33
use rustc_abi::{self as abi, FieldIdx, TagEncoding, VariantIdx, Variants};
4-
use rustc_middle::ty::layout::{LayoutOf, PrimitiveExt, TyAndLayout};
4+
use rustc_middle::ty::layout::{PrimitiveExt, TyAndLayout};
55
use rustc_middle::ty::{self, CoroutineArgsExt, ScalarInt, Ty};
66
use rustc_middle::{mir, span_bug};
77
use tracing::{instrument, trace};

compiler/rustc_const_eval/src/interpret/eval_context.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ use rustc_hir::def_id::DefId;
77
use rustc_middle::mir::interpret::{ErrorHandled, InvalidMetaKind, ReportedErrorInfo};
88
use rustc_middle::query::TyCtxtAt;
99
use rustc_middle::ty::layout::{
10-
self, FnAbiError, FnAbiOfHelpers, FnAbiRequest, LayoutError, LayoutOfHelpers, TyAndLayout,
10+
self, FnAbiError, FnAbiOfHelpers, FnAbiRequest, LayoutError, LayoutOf, LayoutOfHelpers,
11+
TyAndLayout,
1112
};
1213
use rustc_middle::ty::{self, GenericArgsRef, Ty, TyCtxt, TypeFoldable, TypingEnv, Variance};
1314
use rustc_middle::{mir, span_bug};
@@ -91,6 +92,20 @@ impl<'tcx, M: Machine<'tcx>> LayoutOfHelpers<'tcx> for InterpCx<'tcx, M> {
9192
}
9293
}
9394

95+
impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
96+
/// This inherent method takes priority over the trait method with the same name in LayoutOf,
97+
/// and allows wrapping the actual [LayoutOf::layout_of] with a tracing span.
98+
/// See [LayoutOf::layout_of] for the original documentation.
99+
#[inline]
100+
pub fn layout_of(
101+
&self,
102+
ty: Ty<'tcx>,
103+
) -> <InterpCx<'tcx, M> as LayoutOfHelpers<'tcx>>::LayoutOfResult {
104+
let _span = enter_trace_span!(M, "InterpCx::layout_of", "ty = {:?}", ty.kind());
105+
LayoutOf::layout_of(self, ty)
106+
}
107+
}
108+
94109
impl<'tcx, M: Machine<'tcx>> FnAbiOfHelpers<'tcx> for InterpCx<'tcx, M> {
95110
type FnAbiOfResult = Result<&'tcx FnAbi<'tcx, Ty<'tcx>>, InterpErrorKind<'tcx>>;
96111

compiler/rustc_const_eval/src/interpret/intrinsics.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use rustc_abi::Size;
88
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
99
use rustc_hir::def_id::DefId;
1010
use rustc_middle::mir::{self, BinOp, ConstValue, NonDivergingIntrinsic};
11-
use rustc_middle::ty::layout::{LayoutOf as _, TyAndLayout, ValidityRequirement};
11+
use rustc_middle::ty::layout::{TyAndLayout, ValidityRequirement};
1212
use rustc_middle::ty::{GenericArgsRef, Ty, TyCtxt};
1313
use rustc_middle::{bug, ty};
1414
use rustc_span::{Symbol, sym};

compiler/rustc_const_eval/src/interpret/operand.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use rustc_abi as abi;
88
use rustc_abi::{BackendRepr, HasDataLayout, Size};
99
use rustc_hir::def::Namespace;
1010
use rustc_middle::mir::interpret::ScalarSizeMismatch;
11-
use rustc_middle::ty::layout::{HasTyCtxt, HasTypingEnv, LayoutOf, TyAndLayout};
11+
use rustc_middle::ty::layout::{HasTyCtxt, HasTypingEnv, TyAndLayout};
1212
use rustc_middle::ty::print::{FmtPrinter, PrettyPrinter};
1313
use rustc_middle::ty::{ConstInt, ScalarInt, Ty, TyCtxt};
1414
use rustc_middle::{bug, mir, span_bug, ty};

compiler/rustc_const_eval/src/interpret/operator.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use rustc_abi::Size;
33
use rustc_apfloat::{Float, FloatConvert};
44
use rustc_middle::mir::NullOp;
55
use rustc_middle::mir::interpret::{InterpResult, PointerArithmetic, Scalar};
6-
use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
6+
use rustc_middle::ty::layout::TyAndLayout;
77
use rustc_middle::ty::{self, FloatTy, ScalarInt, Ty};
88
use rustc_middle::{bug, mir, span_bug};
99
use rustc_span::sym;

0 commit comments

Comments
 (0)