Skip to content

Commit e2750ba

Browse files
committed
Auto merge of #88499 - eddyb:layout-off, r=nagisa
Provide `layout_of` automatically (given tcx + param_env + error handling). After #88337, there's no longer any uses of `LayoutOf` within `rustc_target` itself, so I realized I could move the trait to `rustc_middle::ty::layout` and redesign it a bit. This is similar to #88338 (and supersedes it), but at no ergonomic loss, since there's no funky `C: LayoutOf<Ty = Ty>` -> `Ty: TyAbiInterface<C>` generic `impl` chain, and each `LayoutOf` still corresponds to one `impl` (of `LayoutOfHelpers`) for the specific context. After this PR, this is what's needed to get `trait LayoutOf` (with the `layout_of` method) implemented on some context type: * `TyCtxt`, via `HasTyCtxt` * `ParamEnv`, via `HasParamEnv` * a way to transform `LayoutError`s into the desired error type * an error type of `!` can be paired with having `cx.layout_of(...)` return `TyAndLayout` *without* `Result<...>` around it, such as used by codegen * this is done through a new `LayoutOfHelpers` trait (and so is specifying the type of `cx.layout_of(...)`) When going through this path (and not bypassing it with a manual `impl` of `LayoutOf`), the end result is that only the error case can be customized, the query itself and the success paths are guaranteed to be uniform. (**EDIT**: just noticed that because of the supertrait relationship, you cannot actually implement `LayoutOf` yourself, the blanket `impl` fully covers all possible context types that could ever implement it) Part of the motivation for this shape of API is that I've been working on querifying `FnAbi::of_*`, and what I want/need to introduce for that looks a lot like the setup in this PR - in particular, it's harder to express the `FnAbi` methods in `rustc_target`, since they're much more tied to `rustc` concepts. r? `@nagisa` cc `@oli-obk` `@bjorn3`
2 parents f7c00dc + f53c93c commit e2750ba

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+251
-216
lines changed

compiler/rustc_codegen_cranelift/src/common.rs

+15-17
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use rustc_index::vec::IndexVec;
2+
use rustc_middle::ty::layout::{LayoutError, LayoutOfHelpers};
23
use rustc_middle::ty::SymbolName;
34
use rustc_target::abi::call::FnAbi;
45
use rustc_target::abi::{Integer, Primitive};
@@ -256,12 +257,12 @@ pub(crate) struct FunctionCx<'m, 'clif, 'tcx: 'm> {
256257
pub(crate) inline_asm_index: u32,
257258
}
258259

259-
impl<'tcx> LayoutOf<'tcx> for FunctionCx<'_, '_, 'tcx> {
260-
type Ty = Ty<'tcx>;
261-
type TyAndLayout = TyAndLayout<'tcx>;
260+
impl<'tcx> LayoutOfHelpers<'tcx> for FunctionCx<'_, '_, 'tcx> {
261+
type LayoutOfResult = TyAndLayout<'tcx>;
262262

263-
fn layout_of(&self, ty: Ty<'tcx>) -> TyAndLayout<'tcx> {
264-
RevealAllLayoutCx(self.tcx).layout_of(ty)
263+
#[inline]
264+
fn handle_layout_err(&self, err: LayoutError<'tcx>, span: Span, ty: Ty<'tcx>) -> ! {
265+
RevealAllLayoutCx(self.tcx).handle_layout_err(err, span, ty)
265266
}
266267
}
267268

@@ -364,19 +365,16 @@ impl<'tcx> FunctionCx<'_, '_, 'tcx> {
364365

365366
pub(crate) struct RevealAllLayoutCx<'tcx>(pub(crate) TyCtxt<'tcx>);
366367

367-
impl<'tcx> LayoutOf<'tcx> for RevealAllLayoutCx<'tcx> {
368-
type Ty = Ty<'tcx>;
369-
type TyAndLayout = TyAndLayout<'tcx>;
368+
impl<'tcx> LayoutOfHelpers<'tcx> for RevealAllLayoutCx<'tcx> {
369+
type LayoutOfResult = TyAndLayout<'tcx>;
370370

371-
fn layout_of(&self, ty: Ty<'tcx>) -> TyAndLayout<'tcx> {
372-
assert!(!ty.still_further_specializable());
373-
self.0.layout_of(ParamEnv::reveal_all().and(&ty)).unwrap_or_else(|e| {
374-
if let layout::LayoutError::SizeOverflow(_) = e {
375-
self.0.sess.fatal(&e.to_string())
376-
} else {
377-
bug!("failed to get layout for `{}`: {}", ty, e)
378-
}
379-
})
371+
#[inline]
372+
fn handle_layout_err(&self, err: LayoutError<'tcx>, span: Span, ty: Ty<'tcx>) -> ! {
373+
if let layout::LayoutError::SizeOverflow(_) = err {
374+
self.0.sess.span_fatal(span, &err.to_string())
375+
} else {
376+
span_bug!(span, "failed to get layout for `{}`: {}", ty, err)
377+
}
380378
}
381379
}
382380

compiler/rustc_codegen_cranelift/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,12 @@ mod prelude {
7979
pub(crate) use rustc_hir::def_id::{DefId, LOCAL_CRATE};
8080
pub(crate) use rustc_middle::bug;
8181
pub(crate) use rustc_middle::mir::{self, *};
82-
pub(crate) use rustc_middle::ty::layout::{self, TyAndLayout};
82+
pub(crate) use rustc_middle::ty::layout::{self, LayoutOf, TyAndLayout};
8383
pub(crate) use rustc_middle::ty::{
8484
self, FloatTy, Instance, InstanceDef, IntTy, ParamEnv, Ty, TyCtxt, TypeAndMut,
8585
TypeFoldable, UintTy,
8686
};
87-
pub(crate) use rustc_target::abi::{Abi, LayoutOf, Scalar, Size, VariantIdx};
87+
pub(crate) use rustc_target::abi::{Abi, Scalar, Size, VariantIdx};
8888

8989
pub(crate) use rustc_data_structures::fx::FxHashMap;
9090

compiler/rustc_codegen_llvm/src/abi.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ use rustc_codegen_ssa::mir::place::PlaceRef;
1111
use rustc_codegen_ssa::traits::*;
1212
use rustc_codegen_ssa::MemFlags;
1313
use rustc_middle::bug;
14+
use rustc_middle::ty::layout::LayoutOf;
1415
pub use rustc_middle::ty::layout::{FAT_PTR_ADDR, FAT_PTR_EXTRA};
1516
use rustc_middle::ty::Ty;
1617
use rustc_target::abi::call::ArgAbi;
1718
pub use rustc_target::abi::call::*;
18-
use rustc_target::abi::{self, HasDataLayout, Int, LayoutOf};
19+
use rustc_target::abi::{self, HasDataLayout, Int};
1920
pub use rustc_target::spec::abi::Abi;
2021

2122
use libc::c_uint;

compiler/rustc_codegen_llvm/src/builder.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use rustc_codegen_ssa::traits::*;
1515
use rustc_codegen_ssa::MemFlags;
1616
use rustc_data_structures::small_c_str::SmallCStr;
1717
use rustc_hir::def_id::DefId;
18-
use rustc_middle::ty::layout::TyAndLayout;
18+
use rustc_middle::ty::layout::{LayoutError, LayoutOfHelpers, TyAndLayout};
1919
use rustc_middle::ty::{self, Ty, TyCtxt};
2020
use rustc_span::Span;
2121
use rustc_target::abi::{self, Align, Size};
@@ -88,12 +88,12 @@ impl HasTargetSpec for Builder<'_, '_, 'tcx> {
8888
}
8989
}
9090

91-
impl abi::LayoutOf<'tcx> for Builder<'_, '_, 'tcx> {
92-
type Ty = Ty<'tcx>;
93-
type TyAndLayout = TyAndLayout<'tcx>;
91+
impl LayoutOfHelpers<'tcx> for Builder<'_, '_, 'tcx> {
92+
type LayoutOfResult = TyAndLayout<'tcx>;
9493

95-
fn layout_of(&self, ty: Ty<'tcx>) -> Self::TyAndLayout {
96-
self.cx.layout_of(ty)
94+
#[inline]
95+
fn handle_layout_err(&self, err: LayoutError<'tcx>, span: Span, ty: Ty<'tcx>) -> ! {
96+
self.cx.handle_layout_err(err, span, ty)
9797
}
9898
}
9999

compiler/rustc_codegen_llvm/src/common.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ use rustc_codegen_ssa::mir::place::PlaceRef;
1212
use rustc_codegen_ssa::traits::*;
1313
use rustc_middle::bug;
1414
use rustc_middle::mir::interpret::{Allocation, GlobalAlloc, Scalar};
15-
use rustc_middle::ty::{layout::TyAndLayout, ScalarInt};
15+
use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
16+
use rustc_middle::ty::ScalarInt;
1617
use rustc_span::symbol::Symbol;
17-
use rustc_target::abi::{self, AddressSpace, HasDataLayout, LayoutOf, Pointer, Size};
18+
use rustc_target::abi::{self, AddressSpace, HasDataLayout, Pointer, Size};
1819

1920
use libc::{c_char, c_uint};
2021
use tracing::debug;

compiler/rustc_codegen_llvm/src/consts.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ use rustc_middle::mir::interpret::{
1515
Scalar as InterpScalar,
1616
};
1717
use rustc_middle::mir::mono::MonoItem;
18+
use rustc_middle::ty::layout::LayoutOf;
1819
use rustc_middle::ty::{self, Instance, Ty};
1920
use rustc_middle::{bug, span_bug};
2021
use rustc_target::abi::{
21-
AddressSpace, Align, HasDataLayout, LayoutOf, Primitive, Scalar, Size, WrappingRange,
22+
AddressSpace, Align, HasDataLayout, Primitive, Scalar, Size, WrappingRange,
2223
};
2324
use std::ops::Range;
2425
use tracing::debug;

compiler/rustc_codegen_llvm/src/context.rs

+13-19
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ use rustc_codegen_ssa::traits::*;
1414
use rustc_data_structures::base_n;
1515
use rustc_data_structures::fx::FxHashMap;
1616
use rustc_data_structures::small_c_str::SmallCStr;
17-
use rustc_middle::bug;
1817
use rustc_middle::mir::mono::CodegenUnit;
19-
use rustc_middle::ty::layout::{HasParamEnv, LayoutError, TyAndLayout};
18+
use rustc_middle::ty::layout::{HasParamEnv, LayoutError, LayoutOfHelpers, TyAndLayout};
2019
use rustc_middle::ty::{self, Instance, Ty, TyCtxt};
20+
use rustc_middle::{bug, span_bug};
2121
use rustc_session::config::{CFGuard, CrateType, DebugInfo};
2222
use rustc_session::Session;
23-
use rustc_span::source_map::{Span, DUMMY_SP};
23+
use rustc_span::source_map::Span;
2424
use rustc_span::symbol::Symbol;
25-
use rustc_target::abi::{HasDataLayout, LayoutOf, PointeeInfo, Size, TargetDataLayout, VariantIdx};
25+
use rustc_target::abi::{HasDataLayout, PointeeInfo, Size, TargetDataLayout, VariantIdx};
2626
use rustc_target::spec::{HasTargetSpec, RelocModel, Target, TlsModel};
2727
use smallvec::SmallVec;
2828

@@ -835,22 +835,16 @@ impl ty::layout::HasTyCtxt<'tcx> for CodegenCx<'ll, 'tcx> {
835835
}
836836
}
837837

838-
impl LayoutOf<'tcx> for CodegenCx<'ll, 'tcx> {
839-
type Ty = Ty<'tcx>;
840-
type TyAndLayout = TyAndLayout<'tcx>;
838+
impl LayoutOfHelpers<'tcx> for CodegenCx<'ll, 'tcx> {
839+
type LayoutOfResult = TyAndLayout<'tcx>;
841840

842-
fn layout_of(&self, ty: Ty<'tcx>) -> Self::TyAndLayout {
843-
self.spanned_layout_of(ty, DUMMY_SP)
844-
}
845-
846-
fn spanned_layout_of(&self, ty: Ty<'tcx>, span: Span) -> Self::TyAndLayout {
847-
self.tcx.layout_of(ty::ParamEnv::reveal_all().and(ty)).unwrap_or_else(|e| {
848-
if let LayoutError::SizeOverflow(_) = e {
849-
self.sess().span_fatal(span, &e.to_string())
850-
} else {
851-
bug!("failed to get layout for `{}`: {}", ty, e)
852-
}
853-
})
841+
#[inline]
842+
fn handle_layout_err(&self, err: LayoutError<'tcx>, span: Span, ty: Ty<'tcx>) -> ! {
843+
if let LayoutError::SizeOverflow(_) = err {
844+
self.sess().span_fatal(span, &err.to_string())
845+
} else {
846+
span_bug!(span, "failed to get layout for `{}`: {}", ty, err)
847+
}
854848
}
855849
}
856850

compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use rustc_hir::def_id::{DefId, LOCAL_CRATE};
2828
use rustc_index::vec::{Idx, IndexVec};
2929
use rustc_middle::ich::NodeIdHashingMode;
3030
use rustc_middle::mir::{self, GeneratorLayout};
31-
use rustc_middle::ty::layout::{self, IntegerExt, PrimitiveExt, TyAndLayout};
31+
use rustc_middle::ty::layout::{self, IntegerExt, LayoutOf, PrimitiveExt, TyAndLayout};
3232
use rustc_middle::ty::subst::GenericArgKind;
3333
use rustc_middle::ty::Instance;
3434
use rustc_middle::ty::{self, AdtKind, GeneratorSubsts, ParamEnv, Ty, TyCtxt};
@@ -37,7 +37,7 @@ use rustc_session::config::{self, DebugInfo};
3737
use rustc_span::symbol::{Interner, Symbol};
3838
use rustc_span::FileNameDisplayPreference;
3939
use rustc_span::{self, SourceFile, SourceFileHash, Span};
40-
use rustc_target::abi::{Abi, Align, HasDataLayout, Integer, LayoutOf, TagEncoding};
40+
use rustc_target::abi::{Abi, Align, HasDataLayout, Integer, TagEncoding};
4141
use rustc_target::abi::{Int, Pointer, F32, F64};
4242
use rustc_target::abi::{Primitive, Size, VariantIdx, Variants};
4343
use tracing::debug;

compiler/rustc_codegen_llvm/src/debuginfo/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ use rustc_data_structures::sync::Lrc;
2525
use rustc_hir::def_id::{DefId, DefIdMap};
2626
use rustc_index::vec::IndexVec;
2727
use rustc_middle::mir;
28-
use rustc_middle::ty::layout::HasTyCtxt;
28+
use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf};
2929
use rustc_middle::ty::subst::{GenericArgKind, SubstsRef};
3030
use rustc_middle::ty::{self, Instance, ParamEnv, Ty, TypeFoldable};
3131
use rustc_session::config::{self, DebugInfo};
3232
use rustc_session::Session;
3333
use rustc_span::symbol::Symbol;
3434
use rustc_span::{self, BytePos, Pos, SourceFile, SourceFileAndLine, Span};
35-
use rustc_target::abi::{LayoutOf, Primitive, Size};
35+
use rustc_target::abi::{Primitive, Size};
3636

3737
use libc::c_uint;
3838
use smallvec::SmallVec;

compiler/rustc_codegen_llvm/src/intrinsic.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ use rustc_codegen_ssa::mir::operand::OperandRef;
1515
use rustc_codegen_ssa::mir::place::PlaceRef;
1616
use rustc_codegen_ssa::traits::*;
1717
use rustc_hir as hir;
18-
use rustc_middle::ty::layout::{FnAbiExt, HasTyCtxt};
18+
use rustc_middle::ty::layout::{FnAbiExt, HasTyCtxt, LayoutOf};
1919
use rustc_middle::ty::{self, Ty};
2020
use rustc_middle::{bug, span_bug};
2121
use rustc_span::{sym, symbol::kw, Span, Symbol};
22-
use rustc_target::abi::{self, HasDataLayout, LayoutOf, Primitive};
22+
use rustc_target::abi::{self, HasDataLayout, Primitive};
2323
use rustc_target::spec::PanicStrategy;
2424

2525
use std::cmp::Ordering;

compiler/rustc_codegen_llvm/src/mono_item.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ use rustc_codegen_ssa::traits::*;
88
use rustc_hir::def_id::{DefId, LOCAL_CRATE};
99
pub use rustc_middle::mir::mono::MonoItem;
1010
use rustc_middle::mir::mono::{Linkage, Visibility};
11-
use rustc_middle::ty::layout::FnAbiExt;
11+
use rustc_middle::ty::layout::{FnAbiExt, LayoutOf};
1212
use rustc_middle::ty::{self, Instance, TypeFoldable};
1313
use rustc_session::config::CrateType;
14-
use rustc_target::abi::LayoutOf;
1514
use rustc_target::spec::RelocModel;
1615
use tracing::debug;
1716

compiler/rustc_codegen_llvm/src/type_of.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ use crate::context::TypeLowering;
44
use crate::type_::Type;
55
use rustc_codegen_ssa::traits::*;
66
use rustc_middle::bug;
7-
use rustc_middle::ty::layout::{FnAbiExt, TyAndLayout};
7+
use rustc_middle::ty::layout::{FnAbiExt, LayoutOf, TyAndLayout};
88
use rustc_middle::ty::print::with_no_trimmed_paths;
99
use rustc_middle::ty::{self, Ty, TypeFoldable};
1010
use rustc_target::abi::{Abi, AddressSpace, Align, FieldsShape};
1111
use rustc_target::abi::{Int, Pointer, F32, F64};
12-
use rustc_target::abi::{LayoutOf, PointeeInfo, Scalar, Size, TyAbiInterface, Variants};
12+
use rustc_target::abi::{PointeeInfo, Scalar, Size, TyAbiInterface, Variants};
1313
use smallvec::{smallvec, SmallVec};
1414
use tracing::debug;
1515

compiler/rustc_codegen_llvm/src/va_arg.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ use rustc_codegen_ssa::{
77
common::IntPredicate,
88
traits::{BaseTypeMethods, BuilderMethods, ConstMethods, DerivedTypeMethods},
99
};
10-
use rustc_middle::ty::layout::HasTyCtxt;
10+
use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf};
1111
use rustc_middle::ty::Ty;
12-
use rustc_target::abi::{Align, Endian, HasDataLayout, LayoutOf, Size};
12+
use rustc_target::abi::{Align, Endian, HasDataLayout, Size};
1313

1414
fn round_pointer_up_to_alignment(
1515
bx: &mut Builder<'a, 'll, 'tcx>,

compiler/rustc_codegen_ssa/src/base.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs;
2222
use rustc_middle::middle::cstore::EncodedMetadata;
2323
use rustc_middle::middle::lang_items;
2424
use rustc_middle::mir::mono::{CodegenUnit, CodegenUnitNameBuilder, MonoItem};
25-
use rustc_middle::ty::layout::{HasTyCtxt, TyAndLayout};
25+
use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf, TyAndLayout};
2626
use rustc_middle::ty::query::Providers;
2727
use rustc_middle::ty::{self, Instance, Ty, TyCtxt};
2828
use rustc_session::cgu_reuse_tracker::CguReuse;
2929
use rustc_session::config::{self, EntryFnType};
3030
use rustc_session::Session;
3131
use rustc_span::symbol::sym;
32-
use rustc_target::abi::{Align, LayoutOf, VariantIdx};
32+
use rustc_target::abi::{Align, VariantIdx};
3333

3434
use std::convert::TryFrom;
3535
use std::ops::{Deref, DerefMut};

compiler/rustc_codegen_ssa/src/mir/analyze.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ use rustc_index::vec::IndexVec;
99
use rustc_middle::mir::traversal;
1010
use rustc_middle::mir::visit::{MutatingUseContext, NonMutatingUseContext, PlaceContext, Visitor};
1111
use rustc_middle::mir::{self, Location, TerminatorKind};
12-
use rustc_middle::ty::layout::HasTyCtxt;
13-
use rustc_target::abi::LayoutOf;
12+
use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf};
1413

1514
pub fn non_ssa_locals<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
1615
fx: &FunctionCx<'a, 'tcx, Bx>,

compiler/rustc_codegen_ssa/src/mir/block.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ use rustc_hir::lang_items::LangItem;
1414
use rustc_index::vec::Idx;
1515
use rustc_middle::mir::AssertKind;
1616
use rustc_middle::mir::{self, SwitchTargets};
17-
use rustc_middle::ty::layout::{FnAbiExt, HasTyCtxt};
17+
use rustc_middle::ty::layout::{FnAbiExt, HasTyCtxt, LayoutOf};
1818
use rustc_middle::ty::print::with_no_trimmed_paths;
1919
use rustc_middle::ty::{self, Instance, Ty, TypeFoldable};
2020
use rustc_span::source_map::Span;
2121
use rustc_span::{sym, Symbol};
2222
use rustc_target::abi::call::{ArgAbi, FnAbi, PassMode};
23-
use rustc_target::abi::{self, HasDataLayout, LayoutOf};
23+
use rustc_target::abi::{self, HasDataLayout};
2424
use rustc_target::spec::abi::Abi;
2525

2626
/// Used by `FunctionCx::codegen_terminator` for emitting common patterns

compiler/rustc_codegen_ssa/src/mir/operand.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ use crate::MemFlags;
88

99
use rustc_middle::mir;
1010
use rustc_middle::mir::interpret::{ConstValue, Pointer, Scalar};
11-
use rustc_middle::ty::layout::TyAndLayout;
11+
use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
1212
use rustc_middle::ty::Ty;
13-
use rustc_target::abi::{Abi, Align, LayoutOf, Size};
13+
use rustc_target::abi::{Abi, Align, Size};
1414

1515
use std::fmt;
1616

compiler/rustc_codegen_ssa/src/mir/place.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ use crate::MemFlags;
88

99
use rustc_middle::mir;
1010
use rustc_middle::mir::tcx::PlaceTy;
11-
use rustc_middle::ty::layout::{HasTyCtxt, TyAndLayout};
11+
use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf, TyAndLayout};
1212
use rustc_middle::ty::{self, Ty};
1313
use rustc_target::abi::{Abi, Align, FieldsShape, Int, TagEncoding};
14-
use rustc_target::abi::{LayoutOf, VariantIdx, Variants};
14+
use rustc_target::abi::{VariantIdx, Variants};
1515

1616
#[derive(Copy, Clone, Debug)]
1717
pub struct PlaceRef<'tcx, V> {

compiler/rustc_codegen_ssa/src/mir/rvalue.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ use rustc_apfloat::{ieee, Float, Round, Status};
1111
use rustc_hir::lang_items::LangItem;
1212
use rustc_middle::mir;
1313
use rustc_middle::ty::cast::{CastTy, IntTy};
14-
use rustc_middle::ty::layout::HasTyCtxt;
14+
use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf};
1515
use rustc_middle::ty::{self, adjustment::PointerCast, Instance, Ty, TyCtxt};
1616
use rustc_span::source_map::{Span, DUMMY_SP};
17-
use rustc_target::abi::{Abi, Int, LayoutOf, Variants};
17+
use rustc_target::abi::{Abi, Int, Variants};
1818

1919
impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
2020
pub fn codegen_rvalue(

compiler/rustc_codegen_ssa/src/mono_item.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ use crate::traits::*;
44
use rustc_hir as hir;
55
use rustc_middle::mir::mono::MonoItem;
66
use rustc_middle::mir::mono::{Linkage, Visibility};
7-
use rustc_middle::ty::layout::HasTyCtxt;
8-
use rustc_target::abi::LayoutOf;
7+
use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf};
98

109
pub trait MonoItemExt<'a, 'tcx> {
1110
fn define<Bx: BuilderMethods<'a, 'tcx>>(&self, cx: &'a Bx::CodegenCx);

0 commit comments

Comments
 (0)