compiler: Directly use rustc_abi in const_eval
This commit is contained in:
parent
b895bf4fdc
commit
bbd18e29da
17 changed files with 29 additions and 32 deletions
|
@ -86,7 +86,7 @@ impl<'tcx> interpret::Machine<'tcx> for DummyMachine {
|
||||||
fn find_mir_or_eval_fn(
|
fn find_mir_or_eval_fn(
|
||||||
_ecx: &mut InterpCx<'tcx, Self>,
|
_ecx: &mut InterpCx<'tcx, Self>,
|
||||||
_instance: ty::Instance<'tcx>,
|
_instance: ty::Instance<'tcx>,
|
||||||
_abi: rustc_target::spec::abi::Abi,
|
_abi: rustc_abi::ExternAbi,
|
||||||
_args: &[interpret::FnArg<'tcx, Self::Provenance>],
|
_args: &[interpret::FnArg<'tcx, Self::Provenance>],
|
||||||
_destination: &interpret::MPlaceTy<'tcx, Self::Provenance>,
|
_destination: &interpret::MPlaceTy<'tcx, Self::Provenance>,
|
||||||
_target: Option<BasicBlock>,
|
_target: Option<BasicBlock>,
|
||||||
|
|
|
@ -3,6 +3,7 @@ use std::fmt;
|
||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
use std::ops::ControlFlow;
|
use std::ops::ControlFlow;
|
||||||
|
|
||||||
|
use rustc_abi::{Align, ExternAbi, Size};
|
||||||
use rustc_ast::Mutability;
|
use rustc_ast::Mutability;
|
||||||
use rustc_data_structures::fx::{FxHashMap, FxIndexMap, IndexEntry};
|
use rustc_data_structures::fx::{FxHashMap, FxIndexMap, IndexEntry};
|
||||||
use rustc_hir::def_id::{DefId, LocalDefId};
|
use rustc_hir::def_id::{DefId, LocalDefId};
|
||||||
|
@ -14,8 +15,6 @@ use rustc_middle::ty::{self, Ty, TyCtxt};
|
||||||
use rustc_middle::{bug, mir};
|
use rustc_middle::{bug, mir};
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
use rustc_span::symbol::{Symbol, sym};
|
use rustc_span::symbol::{Symbol, sym};
|
||||||
use rustc_target::abi::{Align, Size};
|
|
||||||
use rustc_target::spec::abi::Abi as CallAbi;
|
|
||||||
use tracing::debug;
|
use tracing::debug;
|
||||||
|
|
||||||
use super::error::*;
|
use super::error::*;
|
||||||
|
@ -411,7 +410,7 @@ impl<'tcx> interpret::Machine<'tcx> for CompileTimeMachine<'tcx> {
|
||||||
fn find_mir_or_eval_fn(
|
fn find_mir_or_eval_fn(
|
||||||
ecx: &mut InterpCx<'tcx, Self>,
|
ecx: &mut InterpCx<'tcx, Self>,
|
||||||
orig_instance: ty::Instance<'tcx>,
|
orig_instance: ty::Instance<'tcx>,
|
||||||
_abi: CallAbi,
|
_abi: ExternAbi,
|
||||||
args: &[FnArg<'tcx>],
|
args: &[FnArg<'tcx>],
|
||||||
dest: &MPlaceTy<'tcx>,
|
dest: &MPlaceTy<'tcx>,
|
||||||
ret: Option<mir::BasicBlock>,
|
ret: Option<mir::BasicBlock>,
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
// Not in interpret to make sure we do not use private implementation details
|
// Not in interpret to make sure we do not use private implementation details
|
||||||
|
|
||||||
|
use rustc_abi::VariantIdx;
|
||||||
use rustc_middle::query::{Key, TyCtxtAt};
|
use rustc_middle::query::{Key, TyCtxtAt};
|
||||||
use rustc_middle::ty::{self, Ty, TyCtxt};
|
use rustc_middle::ty::{self, Ty, TyCtxt};
|
||||||
use rustc_middle::{bug, mir};
|
use rustc_middle::{bug, mir};
|
||||||
use rustc_target::abi::VariantIdx;
|
|
||||||
use tracing::instrument;
|
use tracing::instrument;
|
||||||
|
|
||||||
use crate::interpret::InterpCx;
|
use crate::interpret::InterpCx;
|
||||||
|
|
|
@ -2,6 +2,7 @@ use std::borrow::Cow;
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
|
|
||||||
use either::Either;
|
use either::Either;
|
||||||
|
use rustc_abi::WrappingRange;
|
||||||
use rustc_errors::codes::*;
|
use rustc_errors::codes::*;
|
||||||
use rustc_errors::{
|
use rustc_errors::{
|
||||||
Diag, DiagArgValue, DiagCtxtHandle, DiagMessage, Diagnostic, EmissionGuarantee, Level,
|
Diag, DiagArgValue, DiagCtxtHandle, DiagMessage, Diagnostic, EmissionGuarantee, Level,
|
||||||
|
@ -15,8 +16,7 @@ use rustc_middle::mir::interpret::{
|
||||||
};
|
};
|
||||||
use rustc_middle::ty::{self, Mutability, Ty};
|
use rustc_middle::ty::{self, Mutability, Ty};
|
||||||
use rustc_span::{Span, Symbol};
|
use rustc_span::{Span, Symbol};
|
||||||
use rustc_target::abi::WrappingRange;
|
use rustc_target::callconv::AdjustForForeignAbiError;
|
||||||
use rustc_target::abi::call::AdjustForForeignAbiError;
|
|
||||||
|
|
||||||
use crate::interpret::InternKind;
|
use crate::interpret::InternKind;
|
||||||
|
|
||||||
|
|
|
@ -4,13 +4,12 @@ use std::assert_matches::assert_matches;
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
|
|
||||||
use either::{Left, Right};
|
use either::{Left, Right};
|
||||||
|
use rustc_abi::{self as abi, ExternAbi, FieldIdx, Integer};
|
||||||
use rustc_middle::ty::layout::{FnAbiOf, IntegerExt, LayoutOf, TyAndLayout};
|
use rustc_middle::ty::layout::{FnAbiOf, IntegerExt, LayoutOf, TyAndLayout};
|
||||||
use rustc_middle::ty::{self, AdtDef, Instance, Ty};
|
use rustc_middle::ty::{self, AdtDef, Instance, Ty};
|
||||||
use rustc_middle::{bug, mir, span_bug};
|
use rustc_middle::{bug, mir, span_bug};
|
||||||
use rustc_span::sym;
|
use rustc_span::sym;
|
||||||
use rustc_target::abi::call::{ArgAbi, FnAbi, PassMode};
|
use rustc_target::callconv::{ArgAbi, FnAbi, PassMode};
|
||||||
use rustc_target::abi::{self, FieldIdx, Integer};
|
|
||||||
use rustc_target::spec::abi::Abi;
|
|
||||||
use tracing::{info, instrument, trace};
|
use tracing::{info, instrument, trace};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
|
@ -488,7 +487,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
||||||
pub(super) fn init_fn_call(
|
pub(super) fn init_fn_call(
|
||||||
&mut self,
|
&mut self,
|
||||||
fn_val: FnVal<'tcx, M::ExtraFnVal>,
|
fn_val: FnVal<'tcx, M::ExtraFnVal>,
|
||||||
(caller_abi, caller_fn_abi): (Abi, &FnAbi<'tcx, Ty<'tcx>>),
|
(caller_abi, caller_fn_abi): (ExternAbi, &FnAbi<'tcx, Ty<'tcx>>),
|
||||||
args: &[FnArg<'tcx, M::Provenance>],
|
args: &[FnArg<'tcx, M::Provenance>],
|
||||||
with_caller_location: bool,
|
with_caller_location: bool,
|
||||||
destination: &MPlaceTy<'tcx, M::Provenance>,
|
destination: &MPlaceTy<'tcx, M::Provenance>,
|
||||||
|
@ -566,7 +565,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
||||||
|
|
||||||
// Special handling for the closure ABI: untuple the last argument.
|
// Special handling for the closure ABI: untuple the last argument.
|
||||||
let args: Cow<'_, [FnArg<'tcx, M::Provenance>]> =
|
let args: Cow<'_, [FnArg<'tcx, M::Provenance>]> =
|
||||||
if caller_abi == Abi::RustCall && !args.is_empty() {
|
if caller_abi == ExternAbi::RustCall && !args.is_empty() {
|
||||||
// Untuple
|
// Untuple
|
||||||
let (untuple_arg, args) = args.split_last().unwrap();
|
let (untuple_arg, args) = args.split_last().unwrap();
|
||||||
trace!("init_fn_call: Will pass last argument by untupling");
|
trace!("init_fn_call: Will pass last argument by untupling");
|
||||||
|
@ -732,7 +731,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
||||||
pub(super) fn init_fn_tail_call(
|
pub(super) fn init_fn_tail_call(
|
||||||
&mut self,
|
&mut self,
|
||||||
fn_val: FnVal<'tcx, M::ExtraFnVal>,
|
fn_val: FnVal<'tcx, M::ExtraFnVal>,
|
||||||
(caller_abi, caller_fn_abi): (Abi, &FnAbi<'tcx, Ty<'tcx>>),
|
(caller_abi, caller_fn_abi): (ExternAbi, &FnAbi<'tcx, Ty<'tcx>>),
|
||||||
args: &[FnArg<'tcx, M::Provenance>],
|
args: &[FnArg<'tcx, M::Provenance>],
|
||||||
with_caller_location: bool,
|
with_caller_location: bool,
|
||||||
) -> InterpResult<'tcx> {
|
) -> InterpResult<'tcx> {
|
||||||
|
@ -817,7 +816,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
||||||
|
|
||||||
self.init_fn_call(
|
self.init_fn_call(
|
||||||
FnVal::Instance(instance),
|
FnVal::Instance(instance),
|
||||||
(Abi::Rust, fn_abi),
|
(ExternAbi::Rust, fn_abi),
|
||||||
&[FnArg::Copy(arg.into())],
|
&[FnArg::Copy(arg.into())],
|
||||||
false,
|
false,
|
||||||
&ret,
|
&ret,
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use std::assert_matches::assert_matches;
|
use std::assert_matches::assert_matches;
|
||||||
|
|
||||||
|
use rustc_abi::Integer;
|
||||||
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
|
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
|
||||||
use rustc_apfloat::{Float, FloatConvert};
|
use rustc_apfloat::{Float, FloatConvert};
|
||||||
use rustc_middle::mir::CastKind;
|
use rustc_middle::mir::CastKind;
|
||||||
|
@ -8,7 +9,6 @@ use rustc_middle::ty::adjustment::PointerCoercion;
|
||||||
use rustc_middle::ty::layout::{IntegerExt, LayoutOf, TyAndLayout};
|
use rustc_middle::ty::layout::{IntegerExt, LayoutOf, TyAndLayout};
|
||||||
use rustc_middle::ty::{self, FloatTy, Ty};
|
use rustc_middle::ty::{self, FloatTy, Ty};
|
||||||
use rustc_middle::{bug, span_bug};
|
use rustc_middle::{bug, span_bug};
|
||||||
use rustc_target::abi::Integer;
|
|
||||||
use rustc_type_ir::TyKind::*;
|
use rustc_type_ir::TyKind::*;
|
||||||
use tracing::trace;
|
use tracing::trace;
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
//! Functions for reading and writing discriminants of multi-variant layouts (enums and coroutines).
|
//! Functions for reading and writing discriminants of multi-variant layouts (enums and coroutines).
|
||||||
|
|
||||||
|
use rustc_abi::{self as abi, TagEncoding, VariantIdx, Variants};
|
||||||
use rustc_middle::ty::layout::{LayoutOf, PrimitiveExt};
|
use rustc_middle::ty::layout::{LayoutOf, PrimitiveExt};
|
||||||
use rustc_middle::ty::{self, CoroutineArgsExt, ScalarInt, Ty};
|
use rustc_middle::ty::{self, CoroutineArgsExt, ScalarInt, Ty};
|
||||||
use rustc_middle::{mir, span_bug};
|
use rustc_middle::{mir, span_bug};
|
||||||
use rustc_target::abi::{self, TagEncoding, VariantIdx, Variants};
|
|
||||||
use tracing::{instrument, trace};
|
use tracing::{instrument, trace};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use either::{Left, Right};
|
use either::{Left, Right};
|
||||||
|
use rustc_abi::{Align, HasDataLayout, Size, TargetDataLayout};
|
||||||
use rustc_errors::DiagCtxtHandle;
|
use rustc_errors::DiagCtxtHandle;
|
||||||
use rustc_hir::def_id::DefId;
|
use rustc_hir::def_id::DefId;
|
||||||
use rustc_infer::infer::TyCtxtInferExt;
|
use rustc_infer::infer::TyCtxtInferExt;
|
||||||
|
@ -15,8 +16,7 @@ use rustc_middle::ty::{
|
||||||
use rustc_middle::{mir, span_bug};
|
use rustc_middle::{mir, span_bug};
|
||||||
use rustc_session::Limit;
|
use rustc_session::Limit;
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
use rustc_target::abi::call::FnAbi;
|
use rustc_target::callconv::FnAbi;
|
||||||
use rustc_target::abi::{Align, HasDataLayout, Size, TargetDataLayout};
|
|
||||||
use rustc_trait_selection::traits::ObligationCtxt;
|
use rustc_trait_selection::traits::ObligationCtxt;
|
||||||
use tracing::{debug, instrument, trace};
|
use tracing::{debug, instrument, trace};
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
use std::assert_matches::assert_matches;
|
use std::assert_matches::assert_matches;
|
||||||
|
|
||||||
|
use rustc_abi::Size;
|
||||||
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
|
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
|
||||||
use rustc_hir::def_id::DefId;
|
use rustc_hir::def_id::DefId;
|
||||||
use rustc_middle::mir::{self, BinOp, ConstValue, NonDivergingIntrinsic};
|
use rustc_middle::mir::{self, BinOp, ConstValue, NonDivergingIntrinsic};
|
||||||
|
@ -11,7 +12,6 @@ use rustc_middle::ty::layout::{LayoutOf as _, TyAndLayout, ValidityRequirement};
|
||||||
use rustc_middle::ty::{GenericArgsRef, Ty, TyCtxt};
|
use rustc_middle::ty::{GenericArgsRef, Ty, TyCtxt};
|
||||||
use rustc_middle::{bug, ty};
|
use rustc_middle::{bug, ty};
|
||||||
use rustc_span::symbol::{Symbol, sym};
|
use rustc_span::symbol::{Symbol, sym};
|
||||||
use rustc_target::abi::Size;
|
|
||||||
use tracing::trace;
|
use tracing::trace;
|
||||||
|
|
||||||
use super::memory::MemoryKind;
|
use super::memory::MemoryKind;
|
||||||
|
|
|
@ -6,6 +6,7 @@ use std::borrow::{Borrow, Cow};
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
|
|
||||||
|
use rustc_abi::{Align, ExternAbi, Size};
|
||||||
use rustc_apfloat::{Float, FloatConvert};
|
use rustc_apfloat::{Float, FloatConvert};
|
||||||
use rustc_ast::{InlineAsmOptions, InlineAsmTemplatePiece};
|
use rustc_ast::{InlineAsmOptions, InlineAsmTemplatePiece};
|
||||||
use rustc_middle::query::TyCtxtAt;
|
use rustc_middle::query::TyCtxtAt;
|
||||||
|
@ -14,8 +15,6 @@ use rustc_middle::ty::layout::TyAndLayout;
|
||||||
use rustc_middle::{mir, ty};
|
use rustc_middle::{mir, ty};
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
use rustc_span::def_id::DefId;
|
use rustc_span::def_id::DefId;
|
||||||
use rustc_target::abi::{Align, Size};
|
|
||||||
use rustc_target::spec::abi::Abi as CallAbi;
|
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
AllocBytes, AllocId, AllocKind, AllocRange, Allocation, CTFE_ALLOC_SALT, ConstAllocation,
|
AllocBytes, AllocId, AllocKind, AllocRange, Allocation, CTFE_ALLOC_SALT, ConstAllocation,
|
||||||
|
@ -202,7 +201,7 @@ pub trait Machine<'tcx>: Sized {
|
||||||
fn find_mir_or_eval_fn(
|
fn find_mir_or_eval_fn(
|
||||||
ecx: &mut InterpCx<'tcx, Self>,
|
ecx: &mut InterpCx<'tcx, Self>,
|
||||||
instance: ty::Instance<'tcx>,
|
instance: ty::Instance<'tcx>,
|
||||||
abi: CallAbi,
|
abi: ExternAbi,
|
||||||
args: &[FnArg<'tcx, Self::Provenance>],
|
args: &[FnArg<'tcx, Self::Provenance>],
|
||||||
destination: &MPlaceTy<'tcx, Self::Provenance>,
|
destination: &MPlaceTy<'tcx, Self::Provenance>,
|
||||||
target: Option<mir::BasicBlock>,
|
target: Option<mir::BasicBlock>,
|
||||||
|
@ -214,7 +213,7 @@ pub trait Machine<'tcx>: Sized {
|
||||||
fn call_extra_fn(
|
fn call_extra_fn(
|
||||||
ecx: &mut InterpCx<'tcx, Self>,
|
ecx: &mut InterpCx<'tcx, Self>,
|
||||||
fn_val: Self::ExtraFnVal,
|
fn_val: Self::ExtraFnVal,
|
||||||
abi: CallAbi,
|
abi: ExternAbi,
|
||||||
args: &[FnArg<'tcx, Self::Provenance>],
|
args: &[FnArg<'tcx, Self::Provenance>],
|
||||||
destination: &MPlaceTy<'tcx, Self::Provenance>,
|
destination: &MPlaceTy<'tcx, Self::Provenance>,
|
||||||
target: Option<mir::BasicBlock>,
|
target: Option<mir::BasicBlock>,
|
||||||
|
@ -653,7 +652,7 @@ pub macro compile_time_machine(<$tcx: lifetime>) {
|
||||||
fn call_extra_fn(
|
fn call_extra_fn(
|
||||||
_ecx: &mut InterpCx<$tcx, Self>,
|
_ecx: &mut InterpCx<$tcx, Self>,
|
||||||
fn_val: !,
|
fn_val: !,
|
||||||
_abi: CallAbi,
|
_abi: ExternAbi,
|
||||||
_args: &[FnArg<$tcx>],
|
_args: &[FnArg<$tcx>],
|
||||||
_destination: &MPlaceTy<$tcx, Self::Provenance>,
|
_destination: &MPlaceTy<$tcx, Self::Provenance>,
|
||||||
_target: Option<mir::BasicBlock>,
|
_target: Option<mir::BasicBlock>,
|
||||||
|
|
|
@ -11,13 +11,13 @@ use std::borrow::{Borrow, Cow};
|
||||||
use std::collections::VecDeque;
|
use std::collections::VecDeque;
|
||||||
use std::{fmt, mem, ptr};
|
use std::{fmt, mem, ptr};
|
||||||
|
|
||||||
|
use rustc_abi::{Align, HasDataLayout, Size};
|
||||||
use rustc_ast::Mutability;
|
use rustc_ast::Mutability;
|
||||||
use rustc_data_structures::fx::{FxHashSet, FxIndexMap};
|
use rustc_data_structures::fx::{FxHashSet, FxIndexMap};
|
||||||
use rustc_hir::def::DefKind;
|
use rustc_hir::def::DefKind;
|
||||||
use rustc_middle::bug;
|
use rustc_middle::bug;
|
||||||
use rustc_middle::mir::display_allocation;
|
use rustc_middle::mir::display_allocation;
|
||||||
use rustc_middle::ty::{self, Instance, ParamEnv, Ty, TyCtxt};
|
use rustc_middle::ty::{self, Instance, ParamEnv, Ty, TyCtxt};
|
||||||
use rustc_target::abi::{Align, HasDataLayout, Size};
|
|
||||||
use tracing::{debug, instrument, trace};
|
use tracing::{debug, instrument, trace};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use either::Either;
|
use either::Either;
|
||||||
|
use rustc_abi::Size;
|
||||||
use rustc_apfloat::{Float, FloatConvert};
|
use rustc_apfloat::{Float, FloatConvert};
|
||||||
use rustc_middle::mir::NullOp;
|
use rustc_middle::mir::NullOp;
|
||||||
use rustc_middle::mir::interpret::{InterpResult, PointerArithmetic, Scalar};
|
use rustc_middle::mir::interpret::{InterpResult, PointerArithmetic, Scalar};
|
||||||
|
@ -6,7 +7,6 @@ use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
|
||||||
use rustc_middle::ty::{self, FloatTy, ScalarInt, Ty};
|
use rustc_middle::ty::{self, FloatTy, ScalarInt, Ty};
|
||||||
use rustc_middle::{bug, mir, span_bug};
|
use rustc_middle::{bug, mir, span_bug};
|
||||||
use rustc_span::symbol::sym;
|
use rustc_span::symbol::sym;
|
||||||
use rustc_target::abi::Size;
|
|
||||||
use tracing::trace;
|
use tracing::trace;
|
||||||
|
|
||||||
use super::{ImmTy, InterpCx, Machine, MemPlaceMeta, interp_ok, throw_ub};
|
use super::{ImmTy, InterpCx, Machine, MemPlaceMeta, interp_ok, throw_ub};
|
||||||
|
|
|
@ -10,10 +10,10 @@
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
use std::ops::Range;
|
use std::ops::Range;
|
||||||
|
|
||||||
|
use rustc_abi::{self as abi, Size, VariantIdx};
|
||||||
use rustc_middle::ty::Ty;
|
use rustc_middle::ty::Ty;
|
||||||
use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
|
use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
|
||||||
use rustc_middle::{bug, mir, span_bug, ty};
|
use rustc_middle::{bug, mir, span_bug, ty};
|
||||||
use rustc_target::abi::{self, Size, VariantIdx};
|
|
||||||
use tracing::{debug, instrument};
|
use tracing::{debug, instrument};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
|
|
|
@ -3,13 +3,13 @@
|
||||||
//! The main entry point is the `step` method.
|
//! The main entry point is the `step` method.
|
||||||
|
|
||||||
use either::Either;
|
use either::Either;
|
||||||
|
use rustc_abi::{FIRST_VARIANT, FieldIdx};
|
||||||
use rustc_index::IndexSlice;
|
use rustc_index::IndexSlice;
|
||||||
use rustc_middle::ty::layout::FnAbiOf;
|
use rustc_middle::ty::layout::FnAbiOf;
|
||||||
use rustc_middle::ty::{self, Instance, Ty};
|
use rustc_middle::ty::{self, Instance, Ty};
|
||||||
use rustc_middle::{bug, mir, span_bug};
|
use rustc_middle::{bug, mir, span_bug};
|
||||||
use rustc_span::source_map::Spanned;
|
use rustc_span::source_map::Spanned;
|
||||||
use rustc_target::abi::call::FnAbi;
|
use rustc_target::callconv::FnAbi;
|
||||||
use rustc_target::abi::{FIRST_VARIANT, FieldIdx};
|
|
||||||
use tracing::{info, instrument, trace};
|
use tracing::{info, instrument, trace};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
use rustc_abi::{Align, Size};
|
||||||
use rustc_middle::mir::interpret::{InterpResult, Pointer};
|
use rustc_middle::mir::interpret::{InterpResult, Pointer};
|
||||||
use rustc_middle::ty::layout::LayoutOf;
|
use rustc_middle::ty::layout::LayoutOf;
|
||||||
use rustc_middle::ty::{self, ExistentialPredicateStableCmpExt, Ty, TyCtxt, VtblEntry};
|
use rustc_middle::ty::{self, ExistentialPredicateStableCmpExt, Ty, TyCtxt, VtblEntry};
|
||||||
use rustc_target::abi::{Align, Size};
|
|
||||||
use tracing::trace;
|
use tracing::trace;
|
||||||
|
|
||||||
use super::util::ensure_monomorphic_enough;
|
use super::util::ensure_monomorphic_enough;
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
|
|
||||||
use std::num::NonZero;
|
use std::num::NonZero;
|
||||||
|
|
||||||
|
use rustc_abi::{FieldIdx, FieldsShape, VariantIdx, Variants};
|
||||||
use rustc_index::IndexVec;
|
use rustc_index::IndexVec;
|
||||||
use rustc_middle::mir::interpret::InterpResult;
|
use rustc_middle::mir::interpret::InterpResult;
|
||||||
use rustc_middle::ty::layout::LayoutOf;
|
use rustc_middle::ty::layout::LayoutOf;
|
||||||
use rustc_middle::ty::{self, Ty};
|
use rustc_middle::ty::{self, Ty};
|
||||||
use rustc_target::abi::{FieldIdx, FieldsShape, VariantIdx, Variants};
|
|
||||||
use tracing::trace;
|
use tracing::trace;
|
||||||
|
|
||||||
use super::{InterpCx, MPlaceTy, Machine, Projectable, interp_ok, throw_inval};
|
use super::{InterpCx, MPlaceTy, Machine, Projectable, interp_ok, throw_inval};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
use rustc_abi::Align;
|
||||||
use rustc_middle::mir::*;
|
use rustc_middle::mir::*;
|
||||||
use rustc_middle::ty::{self, TyCtxt};
|
use rustc_middle::ty::{self, TyCtxt};
|
||||||
use rustc_target::abi::Align;
|
|
||||||
use tracing::debug;
|
use tracing::debug;
|
||||||
|
|
||||||
/// Returns `true` if this place is allowed to be less aligned
|
/// Returns `true` if this place is allowed to be less aligned
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue