mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
stable_mir: Directly use types from rustc_abi
This commit is contained in:
parent
9f57edf2e2
commit
5f91811c77
@ -170,7 +170,7 @@ impl<'tcx> Tables<'tcx> {
|
|||||||
stable_mir::mir::mono::StaticDef(self.create_def_id(did))
|
stable_mir::mir::mono::StaticDef(self.create_def_id(did))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn layout_id(&mut self, layout: rustc_target::abi::Layout<'tcx>) -> Layout {
|
pub(crate) fn layout_id(&mut self, layout: rustc_abi::Layout<'tcx>) -> Layout {
|
||||||
self.layouts.create_or_fetch(layout)
|
self.layouts.create_or_fetch(layout)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
use rustc_abi::{Align, Size};
|
||||||
use rustc_middle::mir::ConstValue;
|
use rustc_middle::mir::ConstValue;
|
||||||
use rustc_middle::mir::interpret::{AllocRange, Pointer, alloc_range};
|
use rustc_middle::mir::interpret::{AllocRange, Pointer, alloc_range};
|
||||||
use stable_mir::Error;
|
use stable_mir::Error;
|
||||||
@ -7,7 +8,7 @@ use stable_mir::ty::{Allocation, ProvenanceMap};
|
|||||||
use crate::rustc_smir::{Stable, Tables};
|
use crate::rustc_smir::{Stable, Tables};
|
||||||
|
|
||||||
/// Creates new empty `Allocation` from given `Align`.
|
/// Creates new empty `Allocation` from given `Align`.
|
||||||
fn new_empty_allocation(align: rustc_target::abi::Align) -> Allocation {
|
fn new_empty_allocation(align: Align) -> Allocation {
|
||||||
Allocation {
|
Allocation {
|
||||||
bytes: Vec::new(),
|
bytes: Vec::new(),
|
||||||
provenance: ProvenanceMap { ptrs: Vec::new() },
|
provenance: ProvenanceMap { ptrs: Vec::new() },
|
||||||
@ -45,7 +46,7 @@ pub(crate) fn try_new_allocation<'tcx>(
|
|||||||
.align;
|
.align;
|
||||||
let mut allocation = rustc_middle::mir::interpret::Allocation::uninit(size, align.abi);
|
let mut allocation = rustc_middle::mir::interpret::Allocation::uninit(size, align.abi);
|
||||||
allocation
|
allocation
|
||||||
.write_scalar(&tables.tcx, alloc_range(rustc_target::abi::Size::ZERO, size), scalar)
|
.write_scalar(&tables.tcx, alloc_range(Size::ZERO, size), scalar)
|
||||||
.map_err(|e| e.stable(tables))?;
|
.map_err(|e| e.stable(tables))?;
|
||||||
allocation.stable(tables)
|
allocation.stable(tables)
|
||||||
}
|
}
|
||||||
@ -59,7 +60,7 @@ pub(crate) fn try_new_allocation<'tcx>(
|
|||||||
}
|
}
|
||||||
ConstValue::Slice { data, meta } => {
|
ConstValue::Slice { data, meta } => {
|
||||||
let alloc_id = tables.tcx.reserve_and_set_memory_alloc(data);
|
let alloc_id = tables.tcx.reserve_and_set_memory_alloc(data);
|
||||||
let ptr = Pointer::new(alloc_id.into(), rustc_target::abi::Size::ZERO);
|
let ptr = Pointer::new(alloc_id.into(), Size::ZERO);
|
||||||
let scalar_ptr = rustc_middle::mir::interpret::Scalar::from_pointer(ptr, &tables.tcx);
|
let scalar_ptr = rustc_middle::mir::interpret::Scalar::from_pointer(ptr, &tables.tcx);
|
||||||
let scalar_meta =
|
let scalar_meta =
|
||||||
rustc_middle::mir::interpret::Scalar::from_target_usize(meta, &tables.tcx);
|
rustc_middle::mir::interpret::Scalar::from_target_usize(meta, &tables.tcx);
|
||||||
@ -72,7 +73,7 @@ pub(crate) fn try_new_allocation<'tcx>(
|
|||||||
allocation
|
allocation
|
||||||
.write_scalar(
|
.write_scalar(
|
||||||
&tables.tcx,
|
&tables.tcx,
|
||||||
alloc_range(rustc_target::abi::Size::ZERO, tables.tcx.data_layout.pointer_size),
|
alloc_range(Size::ZERO, tables.tcx.data_layout.pointer_size),
|
||||||
scalar_ptr,
|
scalar_ptr,
|
||||||
)
|
)
|
||||||
.map_err(|e| e.stable(tables))?;
|
.map_err(|e| e.stable(tables))?;
|
||||||
@ -112,10 +113,7 @@ pub(super) fn allocation_filter<'tcx>(
|
|||||||
.map(Some)
|
.map(Some)
|
||||||
.collect();
|
.collect();
|
||||||
for (i, b) in bytes.iter_mut().enumerate() {
|
for (i, b) in bytes.iter_mut().enumerate() {
|
||||||
if !alloc
|
if !alloc.init_mask().get(Size::from_bytes(i + alloc_range.start.bytes_usize())) {
|
||||||
.init_mask()
|
|
||||||
.get(rustc_target::abi::Size::from_bytes(i + alloc_range.start.bytes_usize()))
|
|
||||||
{
|
|
||||||
*b = None;
|
*b = None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
//! Conversion of internal Rust compiler `rustc_target::abi` and `rustc_abi` items to stable ones.
|
//! Conversion of internal Rust compiler `rustc_target` and `rustc_abi` items to stable ones.
|
||||||
|
|
||||||
#![allow(rustc::usage_of_qualified_ty)]
|
#![allow(rustc::usage_of_qualified_ty)]
|
||||||
|
|
||||||
use rustc_middle::ty;
|
use rustc_middle::ty;
|
||||||
use rustc_target::abi::call::Conv;
|
use rustc_target::callconv::{self, Conv};
|
||||||
use stable_mir::abi::{
|
use stable_mir::abi::{
|
||||||
AddressSpace, ArgAbi, CallConvention, FieldsShape, FloatLength, FnAbi, IntegerLength, Layout,
|
AddressSpace, ArgAbi, CallConvention, FieldsShape, FloatLength, FnAbi, IntegerLength, Layout,
|
||||||
LayoutShape, PassMode, Primitive, Scalar, TagEncoding, TyAndLayout, ValueAbi, VariantsShape,
|
LayoutShape, PassMode, Primitive, Scalar, TagEncoding, TyAndLayout, ValueAbi, VariantsShape,
|
||||||
@ -15,7 +15,7 @@ use stable_mir::ty::{Align, IndexedVal, VariantIdx};
|
|||||||
|
|
||||||
use crate::rustc_smir::{Stable, Tables};
|
use crate::rustc_smir::{Stable, Tables};
|
||||||
|
|
||||||
impl<'tcx> Stable<'tcx> for rustc_target::abi::VariantIdx {
|
impl<'tcx> Stable<'tcx> for rustc_abi::VariantIdx {
|
||||||
type T = VariantIdx;
|
type T = VariantIdx;
|
||||||
fn stable(&self, _: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, _: &mut Tables<'_>) -> Self::T {
|
||||||
VariantIdx::to_val(self.as_usize())
|
VariantIdx::to_val(self.as_usize())
|
||||||
@ -33,7 +33,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::Endian {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> Stable<'tcx> for rustc_target::abi::TyAndLayout<'tcx, ty::Ty<'tcx>> {
|
impl<'tcx> Stable<'tcx> for rustc_abi::TyAndLayout<'tcx, ty::Ty<'tcx>> {
|
||||||
type T = TyAndLayout;
|
type T = TyAndLayout;
|
||||||
|
|
||||||
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
||||||
@ -41,7 +41,7 @@ impl<'tcx> Stable<'tcx> for rustc_target::abi::TyAndLayout<'tcx, ty::Ty<'tcx>> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> Stable<'tcx> for rustc_target::abi::Layout<'tcx> {
|
impl<'tcx> Stable<'tcx> for rustc_abi::Layout<'tcx> {
|
||||||
type T = Layout;
|
type T = Layout;
|
||||||
|
|
||||||
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
||||||
@ -49,9 +49,7 @@ impl<'tcx> Stable<'tcx> for rustc_target::abi::Layout<'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> Stable<'tcx>
|
impl<'tcx> Stable<'tcx> for rustc_abi::LayoutData<rustc_abi::FieldIdx, rustc_abi::VariantIdx> {
|
||||||
for rustc_abi::LayoutData<rustc_target::abi::FieldIdx, rustc_target::abi::VariantIdx>
|
|
||||||
{
|
|
||||||
type T = LayoutShape;
|
type T = LayoutShape;
|
||||||
|
|
||||||
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
||||||
@ -65,7 +63,7 @@ impl<'tcx> Stable<'tcx>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> Stable<'tcx> for rustc_target::abi::call::FnAbi<'tcx, ty::Ty<'tcx>> {
|
impl<'tcx> Stable<'tcx> for callconv::FnAbi<'tcx, ty::Ty<'tcx>> {
|
||||||
type T = FnAbi;
|
type T = FnAbi;
|
||||||
|
|
||||||
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
||||||
@ -81,7 +79,7 @@ impl<'tcx> Stable<'tcx> for rustc_target::abi::call::FnAbi<'tcx, ty::Ty<'tcx>> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> Stable<'tcx> for rustc_target::abi::call::ArgAbi<'tcx, ty::Ty<'tcx>> {
|
impl<'tcx> Stable<'tcx> for callconv::ArgAbi<'tcx, ty::Ty<'tcx>> {
|
||||||
type T = ArgAbi;
|
type T = ArgAbi;
|
||||||
|
|
||||||
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
||||||
@ -93,7 +91,7 @@ impl<'tcx> Stable<'tcx> for rustc_target::abi::call::ArgAbi<'tcx, ty::Ty<'tcx>>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> Stable<'tcx> for rustc_target::abi::call::Conv {
|
impl<'tcx> Stable<'tcx> for callconv::Conv {
|
||||||
type T = CallConvention;
|
type T = CallConvention;
|
||||||
|
|
||||||
fn stable(&self, _tables: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, _tables: &mut Tables<'_>) -> Self::T {
|
||||||
@ -122,31 +120,29 @@ impl<'tcx> Stable<'tcx> for rustc_target::abi::call::Conv {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> Stable<'tcx> for rustc_target::abi::call::PassMode {
|
impl<'tcx> Stable<'tcx> for callconv::PassMode {
|
||||||
type T = PassMode;
|
type T = PassMode;
|
||||||
|
|
||||||
fn stable(&self, _tables: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, _tables: &mut Tables<'_>) -> Self::T {
|
||||||
match self {
|
match self {
|
||||||
rustc_target::abi::call::PassMode::Ignore => PassMode::Ignore,
|
callconv::PassMode::Ignore => PassMode::Ignore,
|
||||||
rustc_target::abi::call::PassMode::Direct(attr) => PassMode::Direct(opaque(attr)),
|
callconv::PassMode::Direct(attr) => PassMode::Direct(opaque(attr)),
|
||||||
rustc_target::abi::call::PassMode::Pair(first, second) => {
|
callconv::PassMode::Pair(first, second) => {
|
||||||
PassMode::Pair(opaque(first), opaque(second))
|
PassMode::Pair(opaque(first), opaque(second))
|
||||||
}
|
}
|
||||||
rustc_target::abi::call::PassMode::Cast { pad_i32, cast } => {
|
callconv::PassMode::Cast { pad_i32, cast } => {
|
||||||
PassMode::Cast { pad_i32: *pad_i32, cast: opaque(cast) }
|
PassMode::Cast { pad_i32: *pad_i32, cast: opaque(cast) }
|
||||||
}
|
}
|
||||||
rustc_target::abi::call::PassMode::Indirect { attrs, meta_attrs, on_stack } => {
|
callconv::PassMode::Indirect { attrs, meta_attrs, on_stack } => PassMode::Indirect {
|
||||||
PassMode::Indirect {
|
attrs: opaque(attrs),
|
||||||
attrs: opaque(attrs),
|
meta_attrs: opaque(meta_attrs),
|
||||||
meta_attrs: opaque(meta_attrs),
|
on_stack: *on_stack,
|
||||||
on_stack: *on_stack,
|
},
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> Stable<'tcx> for rustc_abi::FieldsShape<rustc_target::abi::FieldIdx> {
|
impl<'tcx> Stable<'tcx> for rustc_abi::FieldsShape<rustc_abi::FieldIdx> {
|
||||||
type T = FieldsShape;
|
type T = FieldsShape;
|
||||||
|
|
||||||
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
||||||
@ -163,9 +159,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::FieldsShape<rustc_target::abi::FieldIdx>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> Stable<'tcx>
|
impl<'tcx> Stable<'tcx> for rustc_abi::Variants<rustc_abi::FieldIdx, rustc_abi::VariantIdx> {
|
||||||
for rustc_abi::Variants<rustc_target::abi::FieldIdx, rustc_target::abi::VariantIdx>
|
|
||||||
{
|
|
||||||
type T = VariantsShape;
|
type T = VariantsShape;
|
||||||
|
|
||||||
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
||||||
@ -185,7 +179,7 @@ impl<'tcx> Stable<'tcx>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> Stable<'tcx> for rustc_abi::TagEncoding<rustc_target::abi::VariantIdx> {
|
impl<'tcx> Stable<'tcx> for rustc_abi::TagEncoding<rustc_abi::VariantIdx> {
|
||||||
type T = TagEncoding;
|
type T = TagEncoding;
|
||||||
|
|
||||||
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
||||||
|
@ -691,11 +691,7 @@ impl<'tcx> Stable<'tcx> for mir::interpret::Allocation {
|
|||||||
type T = stable_mir::ty::Allocation;
|
type T = stable_mir::ty::Allocation;
|
||||||
|
|
||||||
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
|
||||||
alloc::allocation_filter(
|
alloc::allocation_filter(self, alloc_range(rustc_abi::Size::ZERO, self.size()), tables)
|
||||||
self,
|
|
||||||
alloc_range(rustc_target::abi::Size::ZERO, self.size()),
|
|
||||||
tables,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ pub struct Tables<'tcx> {
|
|||||||
pub(crate) instances: IndexMap<ty::Instance<'tcx>, InstanceDef>,
|
pub(crate) instances: IndexMap<ty::Instance<'tcx>, InstanceDef>,
|
||||||
pub(crate) ty_consts: IndexMap<ty::Const<'tcx>, TyConstId>,
|
pub(crate) ty_consts: IndexMap<ty::Const<'tcx>, TyConstId>,
|
||||||
pub(crate) mir_consts: IndexMap<mir::Const<'tcx>, MirConstId>,
|
pub(crate) mir_consts: IndexMap<mir::Const<'tcx>, MirConstId>,
|
||||||
pub(crate) layouts: IndexMap<rustc_target::abi::Layout<'tcx>, Layout>,
|
pub(crate) layouts: IndexMap<rustc_abi::Layout<'tcx>, Layout>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> Tables<'tcx> {
|
impl<'tcx> Tables<'tcx> {
|
||||||
|
Loading…
Reference in New Issue
Block a user