compiler: Directly use rustc_abi in metadata and middle
Stop reexporting ReprOptions from middle::ty
This commit is contained in:
parent
89ec8c2cfe
commit
236fe33345
@ -1,6 +1,7 @@
|
|||||||
use std::ops::ControlFlow;
|
use std::ops::ControlFlow;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
|
use rustc_abi::ExternAbi;
|
||||||
use rustc_ast::CRATE_NODE_ID;
|
use rustc_ast::CRATE_NODE_ID;
|
||||||
use rustc_attr as attr;
|
use rustc_attr as attr;
|
||||||
use rustc_data_structures::fx::FxHashSet;
|
use rustc_data_structures::fx::FxHashSet;
|
||||||
@ -17,7 +18,6 @@ use rustc_session::utils::NativeLibKind;
|
|||||||
use rustc_span::def_id::{DefId, LOCAL_CRATE};
|
use rustc_span::def_id::{DefId, LOCAL_CRATE};
|
||||||
use rustc_span::symbol::{Symbol, sym};
|
use rustc_span::symbol::{Symbol, sym};
|
||||||
use rustc_target::spec::LinkSelfContainedComponents;
|
use rustc_target::spec::LinkSelfContainedComponents;
|
||||||
use rustc_target::spec::abi::Abi;
|
|
||||||
|
|
||||||
use crate::{errors, fluent_generated};
|
use crate::{errors, fluent_generated};
|
||||||
|
|
||||||
@ -203,7 +203,7 @@ impl<'tcx> Collector<'tcx> {
|
|||||||
|
|
||||||
let sess = self.tcx.sess;
|
let sess = self.tcx.sess;
|
||||||
|
|
||||||
if matches!(abi, Abi::Rust | Abi::RustIntrinsic) {
|
if matches!(abi, ExternAbi::Rust | ExternAbi::RustIntrinsic) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -625,7 +625,7 @@ impl<'tcx> Collector<'tcx> {
|
|||||||
|
|
||||||
fn build_dll_import(
|
fn build_dll_import(
|
||||||
&self,
|
&self,
|
||||||
abi: Abi,
|
abi: ExternAbi,
|
||||||
import_name_type: Option<PeImportNameType>,
|
import_name_type: Option<PeImportNameType>,
|
||||||
item: DefId,
|
item: DefId,
|
||||||
) -> DllImport {
|
) -> DllImport {
|
||||||
@ -634,12 +634,14 @@ impl<'tcx> Collector<'tcx> {
|
|||||||
// this logic is similar to `Target::adjust_abi` (in rustc_target/src/spec/mod.rs) but errors on unsupported inputs
|
// this logic is similar to `Target::adjust_abi` (in rustc_target/src/spec/mod.rs) but errors on unsupported inputs
|
||||||
let calling_convention = if self.tcx.sess.target.arch == "x86" {
|
let calling_convention = if self.tcx.sess.target.arch == "x86" {
|
||||||
match abi {
|
match abi {
|
||||||
Abi::C { .. } | Abi::Cdecl { .. } => DllCallingConvention::C,
|
ExternAbi::C { .. } | ExternAbi::Cdecl { .. } => DllCallingConvention::C,
|
||||||
Abi::Stdcall { .. } => DllCallingConvention::Stdcall(self.i686_arg_list_size(item)),
|
ExternAbi::Stdcall { .. } => {
|
||||||
|
DllCallingConvention::Stdcall(self.i686_arg_list_size(item))
|
||||||
|
}
|
||||||
// On Windows, `extern "system"` behaves like msvc's `__stdcall`.
|
// On Windows, `extern "system"` behaves like msvc's `__stdcall`.
|
||||||
// `__stdcall` only applies on x86 and on non-variadic functions:
|
// `__stdcall` only applies on x86 and on non-variadic functions:
|
||||||
// https://learn.microsoft.com/en-us/cpp/cpp/stdcall?view=msvc-170
|
// https://learn.microsoft.com/en-us/cpp/cpp/stdcall?view=msvc-170
|
||||||
Abi::System { .. } => {
|
ExternAbi::System { .. } => {
|
||||||
let c_variadic =
|
let c_variadic =
|
||||||
self.tcx.type_of(item).instantiate_identity().fn_sig(self.tcx).c_variadic();
|
self.tcx.type_of(item).instantiate_identity().fn_sig(self.tcx).c_variadic();
|
||||||
|
|
||||||
@ -649,10 +651,10 @@ impl<'tcx> Collector<'tcx> {
|
|||||||
DllCallingConvention::Stdcall(self.i686_arg_list_size(item))
|
DllCallingConvention::Stdcall(self.i686_arg_list_size(item))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Abi::Fastcall { .. } => {
|
ExternAbi::Fastcall { .. } => {
|
||||||
DllCallingConvention::Fastcall(self.i686_arg_list_size(item))
|
DllCallingConvention::Fastcall(self.i686_arg_list_size(item))
|
||||||
}
|
}
|
||||||
Abi::Vectorcall { .. } => {
|
ExternAbi::Vectorcall { .. } => {
|
||||||
DllCallingConvention::Vectorcall(self.i686_arg_list_size(item))
|
DllCallingConvention::Vectorcall(self.i686_arg_list_size(item))
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
@ -661,7 +663,9 @@ impl<'tcx> Collector<'tcx> {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
match abi {
|
match abi {
|
||||||
Abi::C { .. } | Abi::Win64 { .. } | Abi::System { .. } => DllCallingConvention::C,
|
ExternAbi::C { .. } | ExternAbi::Win64 { .. } | ExternAbi::System { .. } => {
|
||||||
|
DllCallingConvention::C
|
||||||
|
}
|
||||||
_ => {
|
_ => {
|
||||||
self.tcx.dcx().emit_fatal(errors::UnsupportedAbi { span });
|
self.tcx.dcx().emit_fatal(errors::UnsupportedAbi { span });
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ use decoder::{DecodeContext, Metadata};
|
|||||||
use def_path_hash_map::DefPathHashMapRef;
|
use def_path_hash_map::DefPathHashMapRef;
|
||||||
use encoder::EncodeContext;
|
use encoder::EncodeContext;
|
||||||
pub use encoder::{EncodedMetadata, encode_metadata, rendered_const};
|
pub use encoder::{EncodedMetadata, encode_metadata, rendered_const};
|
||||||
use rustc_abi::{FieldIdx, VariantIdx};
|
use rustc_abi::{FieldIdx, ReprOptions, VariantIdx};
|
||||||
use rustc_ast::expand::StrippedCfgItem;
|
use rustc_ast::expand::StrippedCfgItem;
|
||||||
use rustc_data_structures::fx::FxHashMap;
|
use rustc_data_structures::fx::FxHashMap;
|
||||||
use rustc_data_structures::svh::Svh;
|
use rustc_data_structures::svh::Svh;
|
||||||
@ -27,7 +27,7 @@ use rustc_middle::middle::lib_features::FeatureStability;
|
|||||||
use rustc_middle::middle::resolve_bound_vars::ObjectLifetimeDefault;
|
use rustc_middle::middle::resolve_bound_vars::ObjectLifetimeDefault;
|
||||||
use rustc_middle::ty::fast_reject::SimplifiedType;
|
use rustc_middle::ty::fast_reject::SimplifiedType;
|
||||||
use rustc_middle::ty::{
|
use rustc_middle::ty::{
|
||||||
self, DeducedParamAttrs, ParameterizedOverTcx, ReprOptions, Ty, TyCtxt, UnusedGenericParams,
|
self, DeducedParamAttrs, ParameterizedOverTcx, Ty, TyCtxt, UnusedGenericParams,
|
||||||
};
|
};
|
||||||
use rustc_middle::util::Providers;
|
use rustc_middle::util::Providers;
|
||||||
use rustc_middle::{mir, trivially_parameterized_over_tcx};
|
use rustc_middle::{mir, trivially_parameterized_over_tcx};
|
||||||
|
@ -9,7 +9,7 @@ macro_rules! arena_types {
|
|||||||
($macro:path) => (
|
($macro:path) => (
|
||||||
$macro!([
|
$macro!([
|
||||||
[] layout: rustc_abi::LayoutData<rustc_abi::FieldIdx, rustc_abi::VariantIdx>,
|
[] layout: rustc_abi::LayoutData<rustc_abi::FieldIdx, rustc_abi::VariantIdx>,
|
||||||
[] fn_abi: rustc_target::abi::call::FnAbi<'tcx, rustc_middle::ty::Ty<'tcx>>,
|
[] fn_abi: rustc_target::callconv::FnAbi<'tcx, rustc_middle::ty::Ty<'tcx>>,
|
||||||
// AdtDef are interned and compared by address
|
// AdtDef are interned and compared by address
|
||||||
[decode] adt_def: rustc_middle::ty::AdtDefData,
|
[decode] adt_def: rustc_middle::ty::AdtDefData,
|
||||||
[] steal_thir: rustc_data_structures::steal::Steal<rustc_middle::thir::Thir<'tcx>>,
|
[] steal_thir: rustc_data_structures::steal::Steal<rustc_middle::thir::Thir<'tcx>>,
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
use rustc_abi::ExternAbi;
|
||||||
use rustc_ast::visit::{VisitorResult, walk_list};
|
use rustc_ast::visit::{VisitorResult, walk_list};
|
||||||
use rustc_data_structures::fingerprint::Fingerprint;
|
use rustc_data_structures::fingerprint::Fingerprint;
|
||||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||||
@ -12,7 +13,6 @@ use rustc_middle::hir::nested_filter;
|
|||||||
use rustc_span::def_id::StableCrateId;
|
use rustc_span::def_id::StableCrateId;
|
||||||
use rustc_span::symbol::{Ident, Symbol, kw, sym};
|
use rustc_span::symbol::{Ident, Symbol, kw, sym};
|
||||||
use rustc_span::{ErrorGuaranteed, Span};
|
use rustc_span::{ErrorGuaranteed, Span};
|
||||||
use rustc_target::spec::abi::Abi;
|
|
||||||
use {rustc_ast as ast, rustc_hir_pretty as pprust_hir};
|
use {rustc_ast as ast, rustc_hir_pretty as pprust_hir};
|
||||||
|
|
||||||
use crate::hir::ModuleItems;
|
use crate::hir::ModuleItems;
|
||||||
@ -668,7 +668,7 @@ impl<'hir> Map<'hir> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_foreign_abi(self, hir_id: HirId) -> Abi {
|
pub fn get_foreign_abi(self, hir_id: HirId) -> ExternAbi {
|
||||||
let parent = self.get_parent_item(hir_id);
|
let parent = self.get_parent_item(hir_id);
|
||||||
if let OwnerNode::Item(Item { kind: ItemKind::ForeignMod { abi, .. }, .. }) =
|
if let OwnerNode::Item(Item { kind: ItemKind::ForeignMod { abi, .. }, .. }) =
|
||||||
self.tcx.hir_owner_node(parent)
|
self.tcx.hir_owner_node(parent)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
use rustc_abi::{FieldIdx, VariantIdx};
|
||||||
use rustc_hir::HirId;
|
use rustc_hir::HirId;
|
||||||
use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
|
use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
|
||||||
use rustc_target::abi::{FieldIdx, VariantIdx};
|
|
||||||
|
|
||||||
use crate::ty;
|
use crate::ty;
|
||||||
use crate::ty::Ty;
|
use crate::ty::Ty;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
use rustc_abi::Align;
|
||||||
use rustc_attr::{InlineAttr, InstructionSetAttr, OptimizeAttr};
|
use rustc_attr::{InlineAttr, InstructionSetAttr, OptimizeAttr};
|
||||||
use rustc_macros::{HashStable, TyDecodable, TyEncodable};
|
use rustc_macros::{HashStable, TyDecodable, TyEncodable};
|
||||||
use rustc_span::symbol::Symbol;
|
use rustc_span::symbol::Symbol;
|
||||||
use rustc_target::abi::Align;
|
|
||||||
use rustc_target::spec::SanitizerSet;
|
use rustc_target::spec::SanitizerSet;
|
||||||
|
|
||||||
use crate::mir::mono::Linkage;
|
use crate::mir::mono::Linkage;
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
use std::fmt::{self, Debug, Display, Formatter};
|
use std::fmt::{self, Debug, Display, Formatter};
|
||||||
|
|
||||||
use either::Either;
|
use either::Either;
|
||||||
|
use rustc_abi::{HasDataLayout, Size};
|
||||||
use rustc_hir::def_id::DefId;
|
use rustc_hir::def_id::DefId;
|
||||||
use rustc_macros::{HashStable, Lift, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
|
use rustc_macros::{HashStable, Lift, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
|
||||||
use rustc_session::RemapFileNameExt;
|
use rustc_session::RemapFileNameExt;
|
||||||
use rustc_session::config::RemapPathScopeComponents;
|
use rustc_session::config::RemapPathScopeComponents;
|
||||||
use rustc_span::{DUMMY_SP, Span};
|
use rustc_span::{DUMMY_SP, Span};
|
||||||
use rustc_target::abi::{HasDataLayout, Size};
|
|
||||||
|
|
||||||
use crate::mir::interpret::{AllocId, ConstAllocation, ErrorHandled, Scalar, alloc_range};
|
use crate::mir::interpret::{AllocId, ConstAllocation, ErrorHandled, Scalar, alloc_range};
|
||||||
use crate::mir::{Promoted, pretty_print_const_value};
|
use crate::mir::{Promoted, pretty_print_const_value};
|
||||||
|
@ -12,10 +12,10 @@ use either::{Left, Right};
|
|||||||
use init_mask::*;
|
use init_mask::*;
|
||||||
pub use init_mask::{InitChunk, InitChunkIter};
|
pub use init_mask::{InitChunk, InitChunkIter};
|
||||||
use provenance_map::*;
|
use provenance_map::*;
|
||||||
|
use rustc_abi::{Align, HasDataLayout, Size};
|
||||||
use rustc_ast::Mutability;
|
use rustc_ast::Mutability;
|
||||||
use rustc_data_structures::intern::Interned;
|
use rustc_data_structures::intern::Interned;
|
||||||
use rustc_macros::{HashStable, TyDecodable, TyEncodable};
|
use rustc_macros::{HashStable, TyDecodable, TyEncodable};
|
||||||
use rustc_target::abi::{Align, HasDataLayout, Size};
|
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
AllocId, BadBytesAccess, CtfeProvenance, InterpErrorKind, InterpResult, Pointer,
|
AllocId, BadBytesAccess, CtfeProvenance, InterpErrorKind, InterpResult, Pointer,
|
||||||
|
@ -4,9 +4,9 @@ mod tests;
|
|||||||
use std::ops::Range;
|
use std::ops::Range;
|
||||||
use std::{hash, iter};
|
use std::{hash, iter};
|
||||||
|
|
||||||
|
use rustc_abi::Size;
|
||||||
use rustc_macros::{HashStable, TyDecodable, TyEncodable};
|
use rustc_macros::{HashStable, TyDecodable, TyEncodable};
|
||||||
use rustc_serialize::{Decodable, Encodable};
|
use rustc_serialize::{Decodable, Encodable};
|
||||||
use rustc_target::abi::Size;
|
|
||||||
use rustc_type_ir::{TyDecoder, TyEncoder};
|
use rustc_type_ir::{TyDecoder, TyEncoder};
|
||||||
|
|
||||||
use super::AllocRange;
|
use super::AllocRange;
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
use std::cmp;
|
use std::cmp;
|
||||||
|
|
||||||
|
use rustc_abi::{HasDataLayout, Size};
|
||||||
use rustc_data_structures::sorted_map::SortedMap;
|
use rustc_data_structures::sorted_map::SortedMap;
|
||||||
use rustc_macros::HashStable;
|
use rustc_macros::HashStable;
|
||||||
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
|
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
|
||||||
use rustc_target::abi::{HasDataLayout, Size};
|
|
||||||
use tracing::trace;
|
use tracing::trace;
|
||||||
|
|
||||||
use super::{AllocError, AllocRange, AllocResult, CtfeProvenance, Provenance, alloc_range};
|
use super::{AllocError, AllocRange, AllocResult, CtfeProvenance, Provenance, alloc_range};
|
||||||
|
@ -4,6 +4,7 @@ use std::borrow::Cow;
|
|||||||
use std::{convert, fmt, mem, ops};
|
use std::{convert, fmt, mem, ops};
|
||||||
|
|
||||||
use either::Either;
|
use either::Either;
|
||||||
|
use rustc_abi::{Align, Size, VariantIdx, WrappingRange};
|
||||||
use rustc_ast_ir::Mutability;
|
use rustc_ast_ir::Mutability;
|
||||||
use rustc_data_structures::sync::Lock;
|
use rustc_data_structures::sync::Lock;
|
||||||
use rustc_errors::{DiagArgName, DiagArgValue, DiagMessage, ErrorGuaranteed, IntoDiagArg};
|
use rustc_errors::{DiagArgName, DiagArgValue, DiagMessage, ErrorGuaranteed, IntoDiagArg};
|
||||||
@ -11,7 +12,6 @@ use rustc_macros::{HashStable, TyDecodable, TyEncodable};
|
|||||||
use rustc_session::CtfeBacktrace;
|
use rustc_session::CtfeBacktrace;
|
||||||
use rustc_span::def_id::DefId;
|
use rustc_span::def_id::DefId;
|
||||||
use rustc_span::{DUMMY_SP, Span, Symbol};
|
use rustc_span::{DUMMY_SP, Span, Symbol};
|
||||||
use rustc_target::abi::{Align, Size, VariantIdx, WrappingRange, call};
|
|
||||||
|
|
||||||
use super::{AllocId, AllocRange, ConstAllocation, Pointer, Scalar};
|
use super::{AllocId, AllocRange, ConstAllocation, Pointer, Scalar};
|
||||||
use crate::error;
|
use crate::error;
|
||||||
@ -217,7 +217,7 @@ pub enum InvalidProgramInfo<'tcx> {
|
|||||||
/// An error occurred during FnAbi computation: the passed --target lacks FFI support
|
/// An error occurred during FnAbi computation: the passed --target lacks FFI support
|
||||||
/// (which unfortunately typeck does not reject).
|
/// (which unfortunately typeck does not reject).
|
||||||
/// Not using `FnAbiError` as that contains a nested `LayoutError`.
|
/// Not using `FnAbiError` as that contains a nested `LayoutError`.
|
||||||
FnAbiAdjustForForeignAbi(call::AdjustForForeignAbiError),
|
FnAbiAdjustForForeignAbi(rustc_target::callconv::AdjustForForeignAbiError),
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Details of why a pointer had to be in-bounds.
|
/// Details of why a pointer had to be in-bounds.
|
||||||
|
@ -12,6 +12,7 @@ use std::io::{Read, Write};
|
|||||||
use std::num::NonZero;
|
use std::num::NonZero;
|
||||||
use std::{fmt, io};
|
use std::{fmt, io};
|
||||||
|
|
||||||
|
use rustc_abi::{AddressSpace, Endian, HasDataLayout};
|
||||||
use rustc_ast::LitKind;
|
use rustc_ast::LitKind;
|
||||||
use rustc_data_structures::fx::FxHashMap;
|
use rustc_data_structures::fx::FxHashMap;
|
||||||
use rustc_data_structures::sync::Lock;
|
use rustc_data_structures::sync::Lock;
|
||||||
@ -20,7 +21,6 @@ use rustc_hir::def_id::{DefId, LocalDefId};
|
|||||||
use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
|
use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
|
||||||
use rustc_middle::ty::print::with_no_trimmed_paths;
|
use rustc_middle::ty::print::with_no_trimmed_paths;
|
||||||
use rustc_serialize::{Decodable, Encodable};
|
use rustc_serialize::{Decodable, Encodable};
|
||||||
use rustc_target::abi::{AddressSpace, Endian, HasDataLayout};
|
|
||||||
use tracing::{debug, trace};
|
use tracing::{debug, trace};
|
||||||
// Also make the error macros available from this module.
|
// Also make the error macros available from this module.
|
||||||
pub use {
|
pub use {
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::num::NonZero;
|
use std::num::NonZero;
|
||||||
|
|
||||||
|
use rustc_abi::{HasDataLayout, Size};
|
||||||
use rustc_data_structures::static_assert_size;
|
use rustc_data_structures::static_assert_size;
|
||||||
use rustc_macros::{HashStable, TyDecodable, TyEncodable};
|
use rustc_macros::{HashStable, TyDecodable, TyEncodable};
|
||||||
use rustc_target::abi::{HasDataLayout, Size};
|
|
||||||
|
|
||||||
use super::AllocId;
|
use super::AllocId;
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
use either::{Either, Left, Right};
|
use either::{Either, Left, Right};
|
||||||
|
use rustc_abi::{HasDataLayout, Size};
|
||||||
use rustc_apfloat::Float;
|
use rustc_apfloat::Float;
|
||||||
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
|
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
|
||||||
use rustc_macros::{HashStable, TyDecodable, TyEncodable};
|
use rustc_macros::{HashStable, TyDecodable, TyEncodable};
|
||||||
use rustc_target::abi::{HasDataLayout, Size};
|
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
AllocId, CtfeProvenance, InterpResult, Pointer, PointerArithmetic, Provenance,
|
AllocId, CtfeProvenance, InterpResult, Pointer, PointerArithmetic, Provenance,
|
||||||
|
@ -10,6 +10,7 @@ use std::{iter, mem};
|
|||||||
pub use basic_blocks::BasicBlocks;
|
pub use basic_blocks::BasicBlocks;
|
||||||
use either::Either;
|
use either::Either;
|
||||||
use polonius_engine::Atom;
|
use polonius_engine::Atom;
|
||||||
|
use rustc_abi::{FieldIdx, VariantIdx};
|
||||||
pub use rustc_ast::Mutability;
|
pub use rustc_ast::Mutability;
|
||||||
use rustc_data_structures::captures::Captures;
|
use rustc_data_structures::captures::Captures;
|
||||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||||
@ -27,7 +28,6 @@ use rustc_serialize::{Decodable, Encodable};
|
|||||||
use rustc_span::source_map::Spanned;
|
use rustc_span::source_map::Spanned;
|
||||||
use rustc_span::symbol::Symbol;
|
use rustc_span::symbol::Symbol;
|
||||||
use rustc_span::{DUMMY_SP, Span};
|
use rustc_span::{DUMMY_SP, Span};
|
||||||
use rustc_target::abi::{FieldIdx, VariantIdx};
|
|
||||||
use tracing::trace;
|
use tracing::trace;
|
||||||
|
|
||||||
pub use self::query::*;
|
pub use self::query::*;
|
||||||
|
@ -4,6 +4,7 @@ use std::fs;
|
|||||||
use std::io::{self, Write as _};
|
use std::io::{self, Write as _};
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
|
use rustc_abi::Size;
|
||||||
use rustc_ast::InlineAsmTemplatePiece;
|
use rustc_ast::InlineAsmTemplatePiece;
|
||||||
use rustc_middle::mir::interpret::{
|
use rustc_middle::mir::interpret::{
|
||||||
AllocBytes, AllocId, Allocation, GlobalAlloc, Pointer, Provenance, alloc_range,
|
AllocBytes, AllocId, Allocation, GlobalAlloc, Pointer, Provenance, alloc_range,
|
||||||
@ -11,7 +12,6 @@ use rustc_middle::mir::interpret::{
|
|||||||
};
|
};
|
||||||
use rustc_middle::mir::visit::Visitor;
|
use rustc_middle::mir::visit::Visitor;
|
||||||
use rustc_middle::mir::*;
|
use rustc_middle::mir::*;
|
||||||
use rustc_target::abi::Size;
|
|
||||||
use tracing::trace;
|
use tracing::trace;
|
||||||
|
|
||||||
use super::graphviz::write_mir_fn_graphviz;
|
use super::graphviz::write_mir_fn_graphviz;
|
||||||
|
@ -4,6 +4,7 @@ use std::cell::Cell;
|
|||||||
use std::fmt::{self, Debug};
|
use std::fmt::{self, Debug};
|
||||||
|
|
||||||
use derive_where::derive_where;
|
use derive_where::derive_where;
|
||||||
|
use rustc_abi::{FieldIdx, VariantIdx};
|
||||||
use rustc_data_structures::fx::FxIndexMap;
|
use rustc_data_structures::fx::FxIndexMap;
|
||||||
use rustc_errors::ErrorGuaranteed;
|
use rustc_errors::ErrorGuaranteed;
|
||||||
use rustc_hir::def_id::LocalDefId;
|
use rustc_hir::def_id::LocalDefId;
|
||||||
@ -12,7 +13,6 @@ use rustc_index::{Idx, IndexVec};
|
|||||||
use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
|
use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
use rustc_span::symbol::Symbol;
|
use rustc_span::symbol::Symbol;
|
||||||
use rustc_target::abi::{FieldIdx, VariantIdx};
|
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
|
|
||||||
use super::{ConstValue, SourceInfo};
|
use super::{ConstValue, SourceInfo};
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
//! This is in a dedicated file so that changes to this file can be reviewed more carefully.
|
//! This is in a dedicated file so that changes to this file can be reviewed more carefully.
|
||||||
//! The intention is that this file only contains datatype declarations, no code.
|
//! The intention is that this file only contains datatype declarations, no code.
|
||||||
|
|
||||||
|
use rustc_abi::{FieldIdx, VariantIdx};
|
||||||
use rustc_ast::{InlineAsmOptions, InlineAsmTemplatePiece, Mutability};
|
use rustc_ast::{InlineAsmOptions, InlineAsmTemplatePiece, Mutability};
|
||||||
use rustc_data_structures::packed::Pu128;
|
use rustc_data_structures::packed::Pu128;
|
||||||
use rustc_hir::CoroutineKind;
|
use rustc_hir::CoroutineKind;
|
||||||
@ -13,7 +14,6 @@ use rustc_span::Span;
|
|||||||
use rustc_span::def_id::LocalDefId;
|
use rustc_span::def_id::LocalDefId;
|
||||||
use rustc_span::source_map::Spanned;
|
use rustc_span::source_map::Spanned;
|
||||||
use rustc_span::symbol::Symbol;
|
use rustc_span::symbol::Symbol;
|
||||||
use rustc_target::abi::{FieldIdx, VariantIdx};
|
|
||||||
use rustc_target::asm::InlineAsmRegOrRegClass;
|
use rustc_target::asm::InlineAsmRegOrRegClass;
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
|
|
||||||
|
@ -132,12 +132,10 @@ impl EraseType for Result<bool, &ty::layout::LayoutError<'_>> {
|
|||||||
type Result = [u8; size_of::<Result<bool, &'static ty::layout::LayoutError<'static>>>()];
|
type Result = [u8; size_of::<Result<bool, &'static ty::layout::LayoutError<'static>>>()];
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EraseType
|
impl EraseType for Result<rustc_abi::TyAndLayout<'_, Ty<'_>>, &ty::layout::LayoutError<'_>> {
|
||||||
for Result<rustc_target::abi::TyAndLayout<'_, Ty<'_>>, &ty::layout::LayoutError<'_>>
|
|
||||||
{
|
|
||||||
type Result = [u8; size_of::<
|
type Result = [u8; size_of::<
|
||||||
Result<
|
Result<
|
||||||
rustc_target::abi::TyAndLayout<'static, Ty<'static>>,
|
rustc_abi::TyAndLayout<'static, Ty<'static>>,
|
||||||
&'static ty::layout::LayoutError<'static>,
|
&'static ty::layout::LayoutError<'static>,
|
||||||
>,
|
>,
|
||||||
>()];
|
>()];
|
||||||
@ -253,13 +251,14 @@ trivial! {
|
|||||||
Option<rustc_span::def_id::DefId>,
|
Option<rustc_span::def_id::DefId>,
|
||||||
Option<rustc_span::def_id::LocalDefId>,
|
Option<rustc_span::def_id::LocalDefId>,
|
||||||
Option<rustc_span::Span>,
|
Option<rustc_span::Span>,
|
||||||
Option<rustc_target::abi::FieldIdx>,
|
Option<rustc_abi::FieldIdx>,
|
||||||
Option<rustc_target::spec::PanicStrategy>,
|
Option<rustc_target::spec::PanicStrategy>,
|
||||||
Option<usize>,
|
Option<usize>,
|
||||||
Option<rustc_middle::ty::IntrinsicDef>,
|
Option<rustc_middle::ty::IntrinsicDef>,
|
||||||
Result<(), rustc_errors::ErrorGuaranteed>,
|
Result<(), rustc_errors::ErrorGuaranteed>,
|
||||||
Result<(), rustc_middle::traits::query::NoSolution>,
|
Result<(), rustc_middle::traits::query::NoSolution>,
|
||||||
Result<rustc_middle::traits::EvaluationResult, rustc_middle::traits::OverflowError>,
|
Result<rustc_middle::traits::EvaluationResult, rustc_middle::traits::OverflowError>,
|
||||||
|
rustc_abi::ReprOptions,
|
||||||
rustc_ast::expand::allocator::AllocatorKind,
|
rustc_ast::expand::allocator::AllocatorKind,
|
||||||
rustc_attr::ConstStability,
|
rustc_attr::ConstStability,
|
||||||
rustc_attr::DefaultBodyStability,
|
rustc_attr::DefaultBodyStability,
|
||||||
@ -311,7 +310,6 @@ trivial! {
|
|||||||
rustc_middle::ty::fast_reject::SimplifiedType,
|
rustc_middle::ty::fast_reject::SimplifiedType,
|
||||||
rustc_middle::ty::ImplPolarity,
|
rustc_middle::ty::ImplPolarity,
|
||||||
rustc_middle::ty::Representability,
|
rustc_middle::ty::Representability,
|
||||||
rustc_middle::ty::ReprOptions,
|
|
||||||
rustc_middle::ty::UnusedGenericParams,
|
rustc_middle::ty::UnusedGenericParams,
|
||||||
rustc_middle::ty::util::AlwaysRequiresDrop,
|
rustc_middle::ty::util::AlwaysRequiresDrop,
|
||||||
rustc_middle::ty::Visibility<rustc_span::def_id::DefId>,
|
rustc_middle::ty::Visibility<rustc_span::def_id::DefId>,
|
||||||
|
@ -5,7 +5,6 @@ use rustc_hir::hir_id::{HirId, OwnerId};
|
|||||||
use rustc_query_system::query::{DefIdCache, DefaultCache, SingleCache, VecCache};
|
use rustc_query_system::query::{DefIdCache, DefaultCache, SingleCache, VecCache};
|
||||||
use rustc_span::symbol::{Ident, Symbol};
|
use rustc_span::symbol::{Ident, Symbol};
|
||||||
use rustc_span::{DUMMY_SP, Span};
|
use rustc_span::{DUMMY_SP, Span};
|
||||||
use rustc_target::abi;
|
|
||||||
|
|
||||||
use crate::infer::canonical::CanonicalQueryInput;
|
use crate::infer::canonical::CanonicalQueryInput;
|
||||||
use crate::ty::fast_reject::SimplifiedType;
|
use crate::ty::fast_reject::SimplifiedType;
|
||||||
@ -509,7 +508,7 @@ impl<'tcx> Key for (DefId, Ty<'tcx>, GenericArgsRef<'tcx>, ty::ParamEnv<'tcx>) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> Key for (Ty<'tcx>, abi::VariantIdx) {
|
impl<'tcx> Key for (Ty<'tcx>, rustc_abi::VariantIdx) {
|
||||||
type Cache<V> = DefaultCache<Self, V>;
|
type Cache<V> = DefaultCache<Self, V>;
|
||||||
|
|
||||||
fn default_span(&self, _tcx: TyCtxt<'_>) -> Span {
|
fn default_span(&self, _tcx: TyCtxt<'_>) -> Span {
|
||||||
|
@ -42,9 +42,8 @@ use rustc_session::lint::LintExpectationId;
|
|||||||
use rustc_span::def_id::LOCAL_CRATE;
|
use rustc_span::def_id::LOCAL_CRATE;
|
||||||
use rustc_span::symbol::Symbol;
|
use rustc_span::symbol::Symbol;
|
||||||
use rustc_span::{DUMMY_SP, Span};
|
use rustc_span::{DUMMY_SP, Span};
|
||||||
use rustc_target::abi;
|
|
||||||
use rustc_target::spec::PanicStrategy;
|
use rustc_target::spec::PanicStrategy;
|
||||||
use {rustc_ast as ast, rustc_attr as attr, rustc_hir as hir};
|
use {rustc_abi as abi, rustc_ast as ast, rustc_attr as attr, rustc_hir as hir};
|
||||||
|
|
||||||
use crate::infer::canonical::{self, Canonical};
|
use crate::infer::canonical::{self, Canonical};
|
||||||
use crate::lint::LintExpectation;
|
use crate::lint::LintExpectation;
|
||||||
@ -1465,7 +1464,7 @@ rustc_queries! {
|
|||||||
/// instead, where the instance is an `InstanceKind::Virtual`.
|
/// instead, where the instance is an `InstanceKind::Virtual`.
|
||||||
query fn_abi_of_fn_ptr(
|
query fn_abi_of_fn_ptr(
|
||||||
key: ty::ParamEnvAnd<'tcx, (ty::PolyFnSig<'tcx>, &'tcx ty::List<Ty<'tcx>>)>
|
key: ty::ParamEnvAnd<'tcx, (ty::PolyFnSig<'tcx>, &'tcx ty::List<Ty<'tcx>>)>
|
||||||
) -> Result<&'tcx abi::call::FnAbi<'tcx, Ty<'tcx>>, &'tcx ty::layout::FnAbiError<'tcx>> {
|
) -> Result<&'tcx rustc_target::callconv::FnAbi<'tcx, Ty<'tcx>>, &'tcx ty::layout::FnAbiError<'tcx>> {
|
||||||
desc { "computing call ABI of `{}` function pointers", key.value.0 }
|
desc { "computing call ABI of `{}` function pointers", key.value.0 }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1476,7 +1475,7 @@ rustc_queries! {
|
|||||||
/// to an `InstanceKind::Virtual` instance (of `<dyn Trait as Trait>::fn`).
|
/// to an `InstanceKind::Virtual` instance (of `<dyn Trait as Trait>::fn`).
|
||||||
query fn_abi_of_instance(
|
query fn_abi_of_instance(
|
||||||
key: ty::ParamEnvAnd<'tcx, (ty::Instance<'tcx>, &'tcx ty::List<Ty<'tcx>>)>
|
key: ty::ParamEnvAnd<'tcx, (ty::Instance<'tcx>, &'tcx ty::List<Ty<'tcx>>)>
|
||||||
) -> Result<&'tcx abi::call::FnAbi<'tcx, Ty<'tcx>>, &'tcx ty::layout::FnAbiError<'tcx>> {
|
) -> Result<&'tcx rustc_target::callconv::FnAbi<'tcx, Ty<'tcx>>, &'tcx ty::layout::FnAbiError<'tcx>> {
|
||||||
desc { "computing call ABI of `{}`", key.value.0 }
|
desc { "computing call ABI of `{}`", key.value.0 }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ use std::cmp::Ordering;
|
|||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::ops::Index;
|
use std::ops::Index;
|
||||||
|
|
||||||
|
use rustc_abi::{FieldIdx, Integer, Size, VariantIdx};
|
||||||
use rustc_ast::{AsmMacro, InlineAsmOptions, InlineAsmTemplatePiece};
|
use rustc_ast::{AsmMacro, InlineAsmOptions, InlineAsmTemplatePiece};
|
||||||
use rustc_hir as hir;
|
use rustc_hir as hir;
|
||||||
use rustc_hir::def_id::DefId;
|
use rustc_hir::def_id::DefId;
|
||||||
@ -29,7 +30,6 @@ use rustc_middle::ty::{
|
|||||||
};
|
};
|
||||||
use rustc_span::def_id::LocalDefId;
|
use rustc_span::def_id::LocalDefId;
|
||||||
use rustc_span::{ErrorGuaranteed, Span, Symbol};
|
use rustc_span::{ErrorGuaranteed, Span, Symbol};
|
||||||
use rustc_target::abi::{FieldIdx, Integer, Size, VariantIdx};
|
|
||||||
use rustc_target::asm::InlineAsmRegOrRegClass;
|
use rustc_target::asm::InlineAsmRegOrRegClass;
|
||||||
use tracing::instrument;
|
use tracing::instrument;
|
||||||
|
|
||||||
@ -1063,7 +1063,7 @@ impl<'tcx> PatRangeBoundary<'tcx> {
|
|||||||
a.partial_cmp(&b)
|
a.partial_cmp(&b)
|
||||||
}
|
}
|
||||||
ty::Int(ity) => {
|
ty::Int(ity) => {
|
||||||
let size = rustc_target::abi::Integer::from_int_ty(&tcx, *ity).size();
|
let size = rustc_abi::Integer::from_int_ty(&tcx, *ity).size();
|
||||||
let a = size.sign_extend(a) as i128;
|
let a = size.sign_extend(a) as i128;
|
||||||
let b = size.sign_extend(b) as i128;
|
let b = size.sign_extend(b) as i128;
|
||||||
Some(a.cmp(&b))
|
Some(a.cmp(&b))
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
|
use rustc_abi::FieldIdx;
|
||||||
use rustc_hir as hir;
|
use rustc_hir as hir;
|
||||||
use rustc_hir::lang_items::LangItem;
|
use rustc_hir::lang_items::LangItem;
|
||||||
use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
|
use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
use rustc_target::abi::FieldIdx;
|
|
||||||
|
|
||||||
use crate::ty::{self, Ty, TyCtxt};
|
use crate::ty::{self, Ty, TyCtxt};
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ use std::hash::{Hash, Hasher};
|
|||||||
use std::ops::Range;
|
use std::ops::Range;
|
||||||
use std::str;
|
use std::str;
|
||||||
|
|
||||||
|
use rustc_abi::{FIRST_VARIANT, ReprOptions, VariantIdx};
|
||||||
use rustc_data_structures::captures::Captures;
|
use rustc_data_structures::captures::Captures;
|
||||||
use rustc_data_structures::fingerprint::Fingerprint;
|
use rustc_data_structures::fingerprint::Fingerprint;
|
||||||
use rustc_data_structures::fx::FxHashMap;
|
use rustc_data_structures::fx::FxHashMap;
|
||||||
@ -17,7 +18,6 @@ use rustc_macros::{HashStable, TyDecodable, TyEncodable};
|
|||||||
use rustc_query_system::ich::StableHashingContext;
|
use rustc_query_system::ich::StableHashingContext;
|
||||||
use rustc_session::DataTypeKind;
|
use rustc_session::DataTypeKind;
|
||||||
use rustc_span::symbol::sym;
|
use rustc_span::symbol::sym;
|
||||||
use rustc_target::abi::{FIRST_VARIANT, ReprOptions, VariantIdx};
|
|
||||||
use tracing::{debug, info, trace};
|
use tracing::{debug, info, trace};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
|
@ -10,12 +10,12 @@ use std::hash::Hash;
|
|||||||
use std::intrinsics;
|
use std::intrinsics;
|
||||||
use std::marker::DiscriminantKind;
|
use std::marker::DiscriminantKind;
|
||||||
|
|
||||||
|
use rustc_abi::{FieldIdx, VariantIdx};
|
||||||
use rustc_data_structures::fx::FxHashMap;
|
use rustc_data_structures::fx::FxHashMap;
|
||||||
use rustc_hir::def_id::LocalDefId;
|
use rustc_hir::def_id::LocalDefId;
|
||||||
use rustc_middle::ty::TyCtxt;
|
use rustc_middle::ty::TyCtxt;
|
||||||
use rustc_serialize::{Decodable, Encodable};
|
use rustc_serialize::{Decodable, Encodable};
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
use rustc_target::abi::{FieldIdx, VariantIdx};
|
|
||||||
pub use rustc_type_ir::{TyDecoder, TyEncoder};
|
pub use rustc_type_ir::{TyDecoder, TyEncoder};
|
||||||
|
|
||||||
use crate::arena::ArenaAllocatable;
|
use crate::arena::ArenaAllocatable;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::num::NonZero;
|
use std::num::NonZero;
|
||||||
|
|
||||||
|
use rustc_abi::Size;
|
||||||
use rustc_apfloat::Float;
|
use rustc_apfloat::Float;
|
||||||
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
|
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
|
||||||
use rustc_errors::{DiagArgValue, IntoDiagArg};
|
use rustc_errors::{DiagArgValue, IntoDiagArg};
|
||||||
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
|
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
|
||||||
use rustc_target::abi::Size;
|
|
||||||
|
|
||||||
use crate::ty::TyCtxt;
|
use crate::ty::TyCtxt;
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ use std::marker::PhantomData;
|
|||||||
use std::ops::{Bound, Deref};
|
use std::ops::{Bound, Deref};
|
||||||
use std::{fmt, iter, mem};
|
use std::{fmt, iter, mem};
|
||||||
|
|
||||||
use rustc_abi::{FieldIdx, Layout, LayoutData, TargetDataLayout, VariantIdx};
|
use rustc_abi::{ExternAbi, FieldIdx, Layout, LayoutData, TargetDataLayout, VariantIdx};
|
||||||
use rustc_ast::{self as ast, attr};
|
use rustc_ast::{self as ast, attr};
|
||||||
use rustc_data_structures::defer;
|
use rustc_data_structures::defer;
|
||||||
use rustc_data_structures::fingerprint::Fingerprint;
|
use rustc_data_structures::fingerprint::Fingerprint;
|
||||||
@ -49,7 +49,6 @@ use rustc_session::{Limit, MetadataKind, Session};
|
|||||||
use rustc_span::def_id::{CRATE_DEF_ID, DefPathHash, StableCrateId};
|
use rustc_span::def_id::{CRATE_DEF_ID, DefPathHash, StableCrateId};
|
||||||
use rustc_span::symbol::{Ident, Symbol, kw, sym};
|
use rustc_span::symbol::{Ident, Symbol, kw, sym};
|
||||||
use rustc_span::{DUMMY_SP, Span};
|
use rustc_span::{DUMMY_SP, Span};
|
||||||
use rustc_target::spec::abi;
|
|
||||||
use rustc_type_ir::TyKind::*;
|
use rustc_type_ir::TyKind::*;
|
||||||
use rustc_type_ir::fold::TypeFoldable;
|
use rustc_type_ir::fold::TypeFoldable;
|
||||||
use rustc_type_ir::lang_items::TraitSolverLangItem;
|
use rustc_type_ir::lang_items::TraitSolverLangItem;
|
||||||
@ -136,7 +135,7 @@ impl<'tcx> Interner for TyCtxt<'tcx> {
|
|||||||
type AllocId = crate::mir::interpret::AllocId;
|
type AllocId = crate::mir::interpret::AllocId;
|
||||||
type Pat = Pattern<'tcx>;
|
type Pat = Pattern<'tcx>;
|
||||||
type Safety = hir::Safety;
|
type Safety = hir::Safety;
|
||||||
type Abi = abi::Abi;
|
type Abi = ExternAbi;
|
||||||
type Const = ty::Const<'tcx>;
|
type Const = ty::Const<'tcx>;
|
||||||
type PlaceholderConst = ty::PlaceholderConst;
|
type PlaceholderConst = ty::PlaceholderConst;
|
||||||
|
|
||||||
@ -695,13 +694,13 @@ impl<'tcx> rustc_type_ir::inherent::DefId<TyCtxt<'tcx>> for DefId {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> rustc_type_ir::inherent::Abi<TyCtxt<'tcx>> for abi::Abi {
|
impl<'tcx> rustc_type_ir::inherent::Abi<TyCtxt<'tcx>> for ExternAbi {
|
||||||
fn rust() -> Self {
|
fn rust() -> Self {
|
||||||
abi::Abi::Rust
|
ExternAbi::Rust
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_rust(self) -> bool {
|
fn is_rust(self) -> bool {
|
||||||
matches!(self, abi::Abi::Rust)
|
matches!(self, ExternAbi::Rust)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2557,7 +2556,7 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||||||
ty::Tuple(params) => *params,
|
ty::Tuple(params) => *params,
|
||||||
_ => bug!(),
|
_ => bug!(),
|
||||||
};
|
};
|
||||||
self.mk_fn_sig(params, s.output(), s.c_variadic, safety, abi::Abi::Rust)
|
self.mk_fn_sig(params, s.output(), s.c_variadic, safety, ExternAbi::Rust)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2819,7 +2818,7 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||||||
output: I::Item,
|
output: I::Item,
|
||||||
c_variadic: bool,
|
c_variadic: bool,
|
||||||
safety: hir::Safety,
|
safety: hir::Safety,
|
||||||
abi: abi::Abi,
|
abi: ExternAbi,
|
||||||
) -> T::Output
|
) -> T::Output
|
||||||
where
|
where
|
||||||
I: IntoIterator<Item = T>,
|
I: IntoIterator<Item = T>,
|
||||||
|
@ -2,11 +2,10 @@ use std::num::NonZero;
|
|||||||
use std::ops::Bound;
|
use std::ops::Bound;
|
||||||
use std::{cmp, fmt};
|
use std::{cmp, fmt};
|
||||||
|
|
||||||
use rustc_abi::Primitive::{self, Float, Int, Pointer};
|
|
||||||
use rustc_abi::{
|
use rustc_abi::{
|
||||||
AddressSpace, Align, BackendRepr, FieldsShape, HasDataLayout, Integer, LayoutCalculator,
|
AddressSpace, Align, BackendRepr, ExternAbi, FieldIdx, FieldsShape, HasDataLayout, LayoutData,
|
||||||
LayoutData, PointeeInfo, PointerKind, ReprOptions, Scalar, Size, TagEncoding, TargetDataLayout,
|
PointeeInfo, PointerKind, Primitive, ReprOptions, Scalar, Size, TagEncoding, TargetDataLayout,
|
||||||
Variants,
|
TyAbiInterface, VariantIdx, Variants,
|
||||||
};
|
};
|
||||||
use rustc_error_messages::DiagMessage;
|
use rustc_error_messages::DiagMessage;
|
||||||
use rustc_errors::{
|
use rustc_errors::{
|
||||||
@ -19,9 +18,7 @@ use rustc_macros::{HashStable, TyDecodable, TyEncodable, extension};
|
|||||||
use rustc_session::config::OptLevel;
|
use rustc_session::config::OptLevel;
|
||||||
use rustc_span::symbol::{Symbol, sym};
|
use rustc_span::symbol::{Symbol, sym};
|
||||||
use rustc_span::{DUMMY_SP, ErrorGuaranteed, Span};
|
use rustc_span::{DUMMY_SP, ErrorGuaranteed, Span};
|
||||||
use rustc_target::abi::call::FnAbi;
|
use rustc_target::callconv::FnAbi;
|
||||||
use rustc_target::abi::{FieldIdx, TyAbiInterface, VariantIdx, call};
|
|
||||||
use rustc_target::spec::abi::Abi as SpecAbi;
|
|
||||||
use rustc_target::spec::{
|
use rustc_target::spec::{
|
||||||
HasTargetSpec, HasWasmCAbiOpt, HasX86AbiOpt, PanicStrategy, Target, WasmCAbi, X86Abi,
|
HasTargetSpec, HasWasmCAbiOpt, HasX86AbiOpt, PanicStrategy, Target, WasmCAbi, X86Abi,
|
||||||
};
|
};
|
||||||
@ -86,16 +83,16 @@ impl abi::Integer {
|
|||||||
repr: &ReprOptions,
|
repr: &ReprOptions,
|
||||||
min: i128,
|
min: i128,
|
||||||
max: i128,
|
max: i128,
|
||||||
) -> (Integer, bool) {
|
) -> (abi::Integer, bool) {
|
||||||
// Theoretically, negative values could be larger in unsigned representation
|
// Theoretically, negative values could be larger in unsigned representation
|
||||||
// than the unsigned representation of the signed minimum. However, if there
|
// than the unsigned representation of the signed minimum. However, if there
|
||||||
// are any negative values, the only valid unsigned representation is u128
|
// are any negative values, the only valid unsigned representation is u128
|
||||||
// which can fit all i128 values, so the result remains unaffected.
|
// which can fit all i128 values, so the result remains unaffected.
|
||||||
let unsigned_fit = Integer::fit_unsigned(cmp::max(min as u128, max as u128));
|
let unsigned_fit = abi::Integer::fit_unsigned(cmp::max(min as u128, max as u128));
|
||||||
let signed_fit = cmp::max(Integer::fit_signed(min), Integer::fit_signed(max));
|
let signed_fit = cmp::max(abi::Integer::fit_signed(min), abi::Integer::fit_signed(max));
|
||||||
|
|
||||||
if let Some(ity) = repr.int {
|
if let Some(ity) = repr.int {
|
||||||
let discr = Integer::from_attr(&tcx, ity);
|
let discr = abi::Integer::from_attr(&tcx, ity);
|
||||||
let fit = if ity.is_signed() { signed_fit } else { unsigned_fit };
|
let fit = if ity.is_signed() { signed_fit } else { unsigned_fit };
|
||||||
if discr < fit {
|
if discr < fit {
|
||||||
bug!(
|
bug!(
|
||||||
@ -113,7 +110,7 @@ impl abi::Integer {
|
|||||||
tcx.data_layout().c_enum_min_size
|
tcx.data_layout().c_enum_min_size
|
||||||
} else {
|
} else {
|
||||||
// repr(Rust) enums try to be as small as possible
|
// repr(Rust) enums try to be as small as possible
|
||||||
Integer::I8
|
abi::Integer::I8
|
||||||
};
|
};
|
||||||
|
|
||||||
// If there are no negative values, we can use the unsigned fit.
|
// If there are no negative values, we can use the unsigned fit.
|
||||||
@ -154,10 +151,10 @@ impl Primitive {
|
|||||||
#[inline]
|
#[inline]
|
||||||
fn to_ty<'tcx>(&self, tcx: TyCtxt<'tcx>) -> Ty<'tcx> {
|
fn to_ty<'tcx>(&self, tcx: TyCtxt<'tcx>) -> Ty<'tcx> {
|
||||||
match *self {
|
match *self {
|
||||||
Int(i, signed) => i.to_ty(tcx, signed),
|
Primitive::Int(i, signed) => i.to_ty(tcx, signed),
|
||||||
Float(f) => f.to_ty(tcx),
|
Primitive::Float(f) => f.to_ty(tcx),
|
||||||
// FIXME(erikdesjardins): handle non-default addrspace ptr sizes
|
// FIXME(erikdesjardins): handle non-default addrspace ptr sizes
|
||||||
Pointer(_) => Ty::new_mut_ptr(tcx, tcx.types.unit),
|
Primitive::Pointer(_) => Ty::new_mut_ptr(tcx, tcx.types.unit),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,13 +163,13 @@ impl Primitive {
|
|||||||
#[inline]
|
#[inline]
|
||||||
fn to_int_ty<'tcx>(&self, tcx: TyCtxt<'tcx>) -> Ty<'tcx> {
|
fn to_int_ty<'tcx>(&self, tcx: TyCtxt<'tcx>) -> Ty<'tcx> {
|
||||||
match *self {
|
match *self {
|
||||||
Int(i, signed) => i.to_ty(tcx, signed),
|
Primitive::Int(i, signed) => i.to_ty(tcx, signed),
|
||||||
// FIXME(erikdesjardins): handle non-default addrspace ptr sizes
|
// FIXME(erikdesjardins): handle non-default addrspace ptr sizes
|
||||||
Pointer(_) => {
|
Primitive::Pointer(_) => {
|
||||||
let signed = false;
|
let signed = false;
|
||||||
tcx.data_layout().ptr_sized_integer().to_ty(tcx, signed)
|
tcx.data_layout().ptr_sized_integer().to_ty(tcx, signed)
|
||||||
}
|
}
|
||||||
Float(_) => bug!("floats do not have an int type"),
|
Primitive::Float(_) => bug!("floats do not have an int type"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -299,13 +296,13 @@ impl<'tcx> IntoDiagArg for LayoutError<'tcx> {
|
|||||||
|
|
||||||
#[derive(Clone, Copy)]
|
#[derive(Clone, Copy)]
|
||||||
pub struct LayoutCx<'tcx> {
|
pub struct LayoutCx<'tcx> {
|
||||||
pub calc: LayoutCalculator<TyCtxt<'tcx>>,
|
pub calc: abi::LayoutCalculator<TyCtxt<'tcx>>,
|
||||||
pub param_env: ty::ParamEnv<'tcx>,
|
pub param_env: ty::ParamEnv<'tcx>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> LayoutCx<'tcx> {
|
impl<'tcx> LayoutCx<'tcx> {
|
||||||
pub fn new(tcx: TyCtxt<'tcx>, param_env: ty::ParamEnv<'tcx>) -> Self {
|
pub fn new(tcx: TyCtxt<'tcx>, param_env: ty::ParamEnv<'tcx>) -> Self {
|
||||||
Self { calc: LayoutCalculator::new(tcx), param_env }
|
Self { calc: abi::LayoutCalculator::new(tcx), param_env }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -645,7 +642,7 @@ impl<T, E> MaybeResult<T> for Result<T, E> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type TyAndLayout<'tcx> = rustc_target::abi::TyAndLayout<'tcx, Ty<'tcx>>;
|
pub type TyAndLayout<'tcx> = rustc_abi::TyAndLayout<'tcx, Ty<'tcx>>;
|
||||||
|
|
||||||
/// Trait for contexts that want to be able to compute layouts of types.
|
/// Trait for contexts that want to be able to compute layouts of types.
|
||||||
/// This automatically gives access to `LayoutOf`, through a blanket `impl`.
|
/// This automatically gives access to `LayoutOf`, through a blanket `impl`.
|
||||||
@ -1048,7 +1045,7 @@ where
|
|||||||
if let Some(variant) = data_variant {
|
if let Some(variant) = data_variant {
|
||||||
// FIXME(erikdesjardins): handle non-default addrspace ptr sizes
|
// FIXME(erikdesjardins): handle non-default addrspace ptr sizes
|
||||||
// (requires passing in the expected address space from the caller)
|
// (requires passing in the expected address space from the caller)
|
||||||
let ptr_end = offset + Pointer(AddressSpace::DATA).size(cx);
|
let ptr_end = offset + Primitive::Pointer(AddressSpace::DATA).size(cx);
|
||||||
for i in 0..variant.fields.count() {
|
for i in 0..variant.fields.count() {
|
||||||
let field_start = variant.fields.offset(i);
|
let field_start = variant.fields.offset(i);
|
||||||
if field_start <= offset {
|
if field_start <= offset {
|
||||||
@ -1163,7 +1160,7 @@ where
|
|||||||
/// affects various optimizations and codegen.
|
/// affects various optimizations and codegen.
|
||||||
#[inline]
|
#[inline]
|
||||||
#[tracing::instrument(level = "debug", skip(tcx))]
|
#[tracing::instrument(level = "debug", skip(tcx))]
|
||||||
pub fn fn_can_unwind(tcx: TyCtxt<'_>, fn_def_id: Option<DefId>, abi: SpecAbi) -> bool {
|
pub fn fn_can_unwind(tcx: TyCtxt<'_>, fn_def_id: Option<DefId>, abi: ExternAbi) -> bool {
|
||||||
if let Some(did) = fn_def_id {
|
if let Some(did) = fn_def_id {
|
||||||
// Special attribute for functions which can't unwind.
|
// Special attribute for functions which can't unwind.
|
||||||
if tcx.codegen_fn_attrs(did).flags.contains(CodegenFnAttrFlags::NEVER_UNWIND) {
|
if tcx.codegen_fn_attrs(did).flags.contains(CodegenFnAttrFlags::NEVER_UNWIND) {
|
||||||
@ -1195,7 +1192,7 @@ pub fn fn_can_unwind(tcx: TyCtxt<'_>, fn_def_id: Option<DefId>, abi: SpecAbi) ->
|
|||||||
// ABIs have such an option. Otherwise the only other thing here is Rust
|
// ABIs have such an option. Otherwise the only other thing here is Rust
|
||||||
// itself, and those ABIs are determined by the panic strategy configured
|
// itself, and those ABIs are determined by the panic strategy configured
|
||||||
// for this compilation.
|
// for this compilation.
|
||||||
use SpecAbi::*;
|
use ExternAbi::*;
|
||||||
match abi {
|
match abi {
|
||||||
C { unwind }
|
C { unwind }
|
||||||
| System { unwind }
|
| System { unwind }
|
||||||
@ -1231,17 +1228,16 @@ pub enum FnAbiError<'tcx> {
|
|||||||
Layout(LayoutError<'tcx>),
|
Layout(LayoutError<'tcx>),
|
||||||
|
|
||||||
/// Error produced by attempting to adjust a `FnAbi`, for a "foreign" ABI.
|
/// Error produced by attempting to adjust a `FnAbi`, for a "foreign" ABI.
|
||||||
AdjustForForeignAbi(call::AdjustForForeignAbiError),
|
AdjustForForeignAbi(rustc_target::callconv::AdjustForForeignAbiError),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, 'b, G: EmissionGuarantee> Diagnostic<'a, G> for FnAbiError<'b> {
|
impl<'a, 'b, G: EmissionGuarantee> Diagnostic<'a, G> for FnAbiError<'b> {
|
||||||
fn into_diag(self, dcx: DiagCtxtHandle<'a>, level: Level) -> Diag<'a, G> {
|
fn into_diag(self, dcx: DiagCtxtHandle<'a>, level: Level) -> Diag<'a, G> {
|
||||||
match self {
|
match self {
|
||||||
Self::Layout(e) => e.into_diagnostic().into_diag(dcx, level),
|
Self::Layout(e) => e.into_diagnostic().into_diag(dcx, level),
|
||||||
Self::AdjustForForeignAbi(call::AdjustForForeignAbiError::Unsupported {
|
Self::AdjustForForeignAbi(
|
||||||
arch,
|
rustc_target::callconv::AdjustForForeignAbiError::Unsupported { arch, abi },
|
||||||
abi,
|
) => UnsupportedFnAbi { arch, abi: abi.name() }.into_diag(dcx, level),
|
||||||
}) => UnsupportedFnAbi { arch, abi: abi.name() }.into_diag(dcx, level),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ pub use assoc::*;
|
|||||||
pub use generic_args::{GenericArgKind, TermKind, *};
|
pub use generic_args::{GenericArgKind, TermKind, *};
|
||||||
pub use generics::*;
|
pub use generics::*;
|
||||||
pub use intrinsic::IntrinsicDef;
|
pub use intrinsic::IntrinsicDef;
|
||||||
|
use rustc_abi::{Align, FieldIdx, Integer, IntegerType, ReprFlags, ReprOptions, VariantIdx};
|
||||||
use rustc_ast::expand::StrippedCfgItem;
|
use rustc_ast::expand::StrippedCfgItem;
|
||||||
use rustc_ast::node_id::NodeMap;
|
use rustc_ast::node_id::NodeMap;
|
||||||
pub use rustc_ast_ir::{Movability, Mutability, try_visit};
|
pub use rustc_ast_ir::{Movability, Mutability, try_visit};
|
||||||
@ -48,8 +49,6 @@ pub use rustc_session::lint::RegisteredTools;
|
|||||||
use rustc_span::hygiene::MacroKind;
|
use rustc_span::hygiene::MacroKind;
|
||||||
use rustc_span::symbol::{Ident, Symbol, kw, sym};
|
use rustc_span::symbol::{Ident, Symbol, kw, sym};
|
||||||
use rustc_span::{ExpnId, ExpnKind, Span};
|
use rustc_span::{ExpnId, ExpnKind, Span};
|
||||||
use rustc_target::abi::{Align, FieldIdx, Integer, IntegerType, VariantIdx};
|
|
||||||
pub use rustc_target::abi::{ReprFlags, ReprOptions};
|
|
||||||
pub use rustc_type_ir::ConstKind::{
|
pub use rustc_type_ir::ConstKind::{
|
||||||
Bound as BoundCt, Error as ErrorCt, Expr as ExprCt, Infer as InferCt, Param as ParamCt,
|
Bound as BoundCt, Error as ErrorCt, Expr as ExprCt, Infer as InferCt, Param as ParamCt,
|
||||||
Placeholder as PlaceholderCt, Unevaluated, Value,
|
Placeholder as PlaceholderCt, Unevaluated, Value,
|
||||||
|
@ -3,6 +3,7 @@ use std::fmt::{self, Write as _};
|
|||||||
use std::iter;
|
use std::iter;
|
||||||
use std::ops::{Deref, DerefMut};
|
use std::ops::{Deref, DerefMut};
|
||||||
|
|
||||||
|
use rustc_abi::{ExternAbi, Size};
|
||||||
use rustc_apfloat::Float;
|
use rustc_apfloat::Float;
|
||||||
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
|
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
|
||||||
use rustc_data_structures::fx::{FxHashMap, FxIndexMap};
|
use rustc_data_structures::fx::{FxHashMap, FxIndexMap};
|
||||||
@ -17,8 +18,6 @@ use rustc_session::Limit;
|
|||||||
use rustc_session::cstore::{ExternCrate, ExternCrateSource};
|
use rustc_session::cstore::{ExternCrate, ExternCrateSource};
|
||||||
use rustc_span::FileNameDisplayPreference;
|
use rustc_span::FileNameDisplayPreference;
|
||||||
use rustc_span::symbol::{Ident, Symbol, kw};
|
use rustc_span::symbol::{Ident, Symbol, kw};
|
||||||
use rustc_target::abi::Size;
|
|
||||||
use rustc_target::spec::abi::Abi;
|
|
||||||
use rustc_type_ir::{Upcast as _, elaborate};
|
use rustc_type_ir::{Upcast as _, elaborate};
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
|
|
||||||
@ -3029,7 +3028,7 @@ define_print! {
|
|||||||
ty::FnSig<'tcx> {
|
ty::FnSig<'tcx> {
|
||||||
p!(write("{}", self.safety.prefix_str()));
|
p!(write("{}", self.safety.prefix_str()));
|
||||||
|
|
||||||
if self.abi != Abi::Rust {
|
if self.abi != ExternAbi::Rust {
|
||||||
p!(write("extern {} ", self.abi));
|
p!(write("extern {} ", self.abi));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
use std::fmt::{self, Debug};
|
use std::fmt::{self, Debug};
|
||||||
|
|
||||||
|
use rustc_abi::TyAndLayout;
|
||||||
use rustc_ast_ir::try_visit;
|
use rustc_ast_ir::try_visit;
|
||||||
use rustc_ast_ir::visit::VisitorResult;
|
use rustc_ast_ir::visit::VisitorResult;
|
||||||
use rustc_hir::def::Namespace;
|
use rustc_hir::def::Namespace;
|
||||||
use rustc_span::source_map::Spanned;
|
use rustc_span::source_map::Spanned;
|
||||||
use rustc_target::abi::TyAndLayout;
|
|
||||||
use rustc_type_ir::ConstKind;
|
use rustc_type_ir::ConstKind;
|
||||||
|
|
||||||
use super::print::PrettyPrinter;
|
use super::print::PrettyPrinter;
|
||||||
@ -218,8 +218,8 @@ TrivialLiftImpls! {
|
|||||||
// provide any traversal implementations, we need to provide a traversal
|
// provide any traversal implementations, we need to provide a traversal
|
||||||
// implementation (only for TyCtxt<'_> interners).
|
// implementation (only for TyCtxt<'_> interners).
|
||||||
TrivialTypeTraversalImpls! {
|
TrivialTypeTraversalImpls! {
|
||||||
::rustc_target::abi::FieldIdx,
|
::rustc_abi::FieldIdx,
|
||||||
::rustc_target::abi::VariantIdx,
|
::rustc_abi::VariantIdx,
|
||||||
crate::middle::region::Scope,
|
crate::middle::region::Scope,
|
||||||
::rustc_ast::InlineAsmOptions,
|
::rustc_ast::InlineAsmOptions,
|
||||||
::rustc_ast::InlineAsmTemplatePiece,
|
::rustc_ast::InlineAsmTemplatePiece,
|
||||||
@ -271,12 +271,12 @@ TrivialTypeTraversalAndLiftImpls! {
|
|||||||
interpret::AllocId,
|
interpret::AllocId,
|
||||||
interpret::CtfeProvenance,
|
interpret::CtfeProvenance,
|
||||||
interpret::Scalar,
|
interpret::Scalar,
|
||||||
rustc_target::abi::Size,
|
rustc_abi::Size,
|
||||||
}
|
}
|
||||||
|
|
||||||
TrivialLiftImpls! {
|
TrivialLiftImpls! {
|
||||||
::rustc_hir::Safety,
|
::rustc_hir::Safety,
|
||||||
::rustc_target::spec::abi::Abi,
|
::rustc_abi::ExternAbi,
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -8,6 +8,7 @@ use std::iter;
|
|||||||
use std::ops::{ControlFlow, Range};
|
use std::ops::{ControlFlow, Range};
|
||||||
|
|
||||||
use hir::def::{CtorKind, DefKind};
|
use hir::def::{CtorKind, DefKind};
|
||||||
|
use rustc_abi::{ExternAbi, FIRST_VARIANT, FieldIdx, VariantIdx};
|
||||||
use rustc_data_structures::captures::Captures;
|
use rustc_data_structures::captures::Captures;
|
||||||
use rustc_errors::{ErrorGuaranteed, MultiSpan};
|
use rustc_errors::{ErrorGuaranteed, MultiSpan};
|
||||||
use rustc_hir as hir;
|
use rustc_hir as hir;
|
||||||
@ -16,8 +17,6 @@ use rustc_hir::def_id::DefId;
|
|||||||
use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, extension};
|
use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, extension};
|
||||||
use rustc_span::symbol::{Symbol, sym};
|
use rustc_span::symbol::{Symbol, sym};
|
||||||
use rustc_span::{DUMMY_SP, Span};
|
use rustc_span::{DUMMY_SP, Span};
|
||||||
use rustc_target::abi::{FIRST_VARIANT, FieldIdx, VariantIdx};
|
|
||||||
use rustc_target::spec::abi;
|
|
||||||
use rustc_type_ir::TyKind::*;
|
use rustc_type_ir::TyKind::*;
|
||||||
use rustc_type_ir::visit::TypeVisitableExt;
|
use rustc_type_ir::visit::TypeVisitableExt;
|
||||||
use rustc_type_ir::{self as ir, BoundVar, CollectAndApply, DynKind};
|
use rustc_type_ir::{self as ir, BoundVar, CollectAndApply, DynKind};
|
||||||
@ -1365,7 +1364,7 @@ impl<'tcx> Ty<'tcx> {
|
|||||||
inputs_and_output: ty::List::empty(),
|
inputs_and_output: ty::List::empty(),
|
||||||
c_variadic: false,
|
c_variadic: false,
|
||||||
safety: hir::Safety::Safe,
|
safety: hir::Safety::Safe,
|
||||||
abi: abi::Abi::Rust,
|
abi: ExternAbi::Rust,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
Closure(..) => bug!(
|
Closure(..) => bug!(
|
||||||
|
@ -2,6 +2,7 @@ use std::collections::hash_map::Entry;
|
|||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
use std::iter;
|
use std::iter;
|
||||||
|
|
||||||
|
use rustc_abi::{FieldIdx, VariantIdx};
|
||||||
use rustc_data_structures::fx::{FxIndexMap, FxIndexSet};
|
use rustc_data_structures::fx::{FxIndexMap, FxIndexSet};
|
||||||
use rustc_data_structures::unord::{ExtendUnord, UnordItems, UnordSet};
|
use rustc_data_structures::unord::{ExtendUnord, UnordItems, UnordSet};
|
||||||
use rustc_errors::ErrorGuaranteed;
|
use rustc_errors::ErrorGuaranteed;
|
||||||
@ -16,7 +17,6 @@ use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisit
|
|||||||
use rustc_middle::mir::FakeReadCause;
|
use rustc_middle::mir::FakeReadCause;
|
||||||
use rustc_session::Session;
|
use rustc_session::Session;
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
use rustc_target::abi::{FieldIdx, VariantIdx};
|
|
||||||
|
|
||||||
use super::RvalueScopes;
|
use super::RvalueScopes;
|
||||||
use crate::hir::place::Place as HirPlace;
|
use crate::hir::place::Place as HirPlace;
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
use std::{fmt, iter};
|
use std::{fmt, iter};
|
||||||
|
|
||||||
|
use rustc_abi::{ExternAbi, Float, Integer, IntegerType, Size};
|
||||||
use rustc_apfloat::Float as _;
|
use rustc_apfloat::Float as _;
|
||||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||||
use rustc_data_structures::stable_hasher::{Hash128, HashStable, StableHasher};
|
use rustc_data_structures::stable_hasher::{Hash128, HashStable, StableHasher};
|
||||||
@ -14,8 +15,6 @@ use rustc_index::bit_set::GrowableBitSet;
|
|||||||
use rustc_macros::{HashStable, TyDecodable, TyEncodable, extension};
|
use rustc_macros::{HashStable, TyDecodable, TyEncodable, extension};
|
||||||
use rustc_session::Limit;
|
use rustc_session::Limit;
|
||||||
use rustc_span::sym;
|
use rustc_span::sym;
|
||||||
use rustc_target::abi::{Float, Integer, IntegerType, Size};
|
|
||||||
use rustc_target::spec::abi::Abi;
|
|
||||||
use smallvec::{SmallVec, smallvec};
|
use smallvec::{SmallVec, smallvec};
|
||||||
use tracing::{debug, instrument};
|
use tracing::{debug, instrument};
|
||||||
|
|
||||||
@ -1783,7 +1782,7 @@ pub fn is_doc_notable_trait(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
|
|||||||
/// the compiler to make some assumptions about its shape; if the user doesn't use a feature gate, they may
|
/// the compiler to make some assumptions about its shape; if the user doesn't use a feature gate, they may
|
||||||
/// cause an ICE that we otherwise may want to prevent.
|
/// cause an ICE that we otherwise may want to prevent.
|
||||||
pub fn intrinsic_raw(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Option<ty::IntrinsicDef> {
|
pub fn intrinsic_raw(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Option<ty::IntrinsicDef> {
|
||||||
if (matches!(tcx.fn_sig(def_id).skip_binder().abi(), Abi::RustIntrinsic)
|
if (matches!(tcx.fn_sig(def_id).skip_binder().abi(), ExternAbi::RustIntrinsic)
|
||||||
&& tcx.features().intrinsics())
|
&& tcx.features().intrinsics())
|
||||||
|| (tcx.has_attr(def_id, sym::rustc_intrinsic) && tcx.features().rustc_attrs())
|
|| (tcx.has_attr(def_id, sym::rustc_intrinsic) && tcx.features().rustc_attrs())
|
||||||
{
|
{
|
||||||
|
@ -67,7 +67,7 @@ impl<'tcx> Value<TyCtxt<'tcx>> for ty::Binder<'_, ty::FnSig<'_>> {
|
|||||||
err,
|
err,
|
||||||
false,
|
false,
|
||||||
rustc_hir::Safety::Safe,
|
rustc_hir::Safety::Safe,
|
||||||
rustc_target::spec::abi::Abi::Rust,
|
rustc_abi::ExternAbi::Rust,
|
||||||
));
|
));
|
||||||
|
|
||||||
// SAFETY: This is never called when `Self` is not `ty::Binder<'tcx, ty::FnSig<'tcx>>`.
|
// SAFETY: This is never called when `Self` is not `ty::Binder<'tcx, ty::FnSig<'tcx>>`.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user