rename MIR int2ptr casts to match library name
This commit is contained in:
parent
67b9d7d184
commit
038e7c6c38
@ -2263,7 +2263,7 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CastKind::PointerFromExposedAddress => {
|
CastKind::PointerWithExposedProvenance => {
|
||||||
let ty_from = op.ty(body, tcx);
|
let ty_from = op.ty(body, tcx);
|
||||||
let cast_ty_from = CastTy::from_ty(ty_from);
|
let cast_ty_from = CastTy::from_ty(ty_from);
|
||||||
let cast_ty_to = CastTy::from_ty(*ty);
|
let cast_ty_to = CastTy::from_ty(*ty);
|
||||||
@ -2273,7 +2273,7 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
|
|||||||
span_mirbug!(
|
span_mirbug!(
|
||||||
self,
|
self,
|
||||||
rvalue,
|
rvalue,
|
||||||
"Invalid PointerFromExposedAddress cast {:?} -> {:?}",
|
"Invalid PointerWithExposedProvenance cast {:?} -> {:?}",
|
||||||
ty_from,
|
ty_from,
|
||||||
ty
|
ty
|
||||||
)
|
)
|
||||||
|
@ -642,7 +642,7 @@ fn codegen_stmt<'tcx>(
|
|||||||
| CastKind::FnPtrToPtr
|
| CastKind::FnPtrToPtr
|
||||||
| CastKind::PtrToPtr
|
| CastKind::PtrToPtr
|
||||||
| CastKind::PointerExposeAddress
|
| CastKind::PointerExposeAddress
|
||||||
| CastKind::PointerFromExposedAddress,
|
| CastKind::PointerWithExposedProvenance,
|
||||||
ref operand,
|
ref operand,
|
||||||
to_ty,
|
to_ty,
|
||||||
) => {
|
) => {
|
||||||
|
@ -508,7 +508,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
|
|||||||
// Since int2ptr can have arbitrary integer types as input (so we have to do
|
// Since int2ptr can have arbitrary integer types as input (so we have to do
|
||||||
// sign extension and all that), it is currently best handled in the same code
|
// sign extension and all that), it is currently best handled in the same code
|
||||||
// path as the other integer-to-X casts.
|
// path as the other integer-to-X casts.
|
||||||
| mir::CastKind::PointerFromExposedAddress => {
|
| mir::CastKind::PointerWithExposedProvenance => {
|
||||||
assert!(bx.cx().is_backend_immediate(cast));
|
assert!(bx.cx().is_backend_immediate(cast));
|
||||||
let ll_t_out = bx.cx().immediate_backend_type(cast);
|
let ll_t_out = bx.cx().immediate_backend_type(cast);
|
||||||
if operand.layout.abi.is_uninhabited() {
|
if operand.layout.abi.is_uninhabited() {
|
||||||
|
@ -40,7 +40,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
|
|||||||
self.write_immediate(*res, dest)?;
|
self.write_immediate(*res, dest)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
CastKind::PointerFromExposedAddress => {
|
CastKind::PointerWithExposedProvenance => {
|
||||||
let src = self.read_immediate(src)?;
|
let src = self.read_immediate(src)?;
|
||||||
let res = self.pointer_from_exposed_address_cast(&src, cast_layout)?;
|
let res = self.pointer_from_exposed_address_cast(&src, cast_layout)?;
|
||||||
self.write_immediate(*res, dest)?;
|
self.write_immediate(*res, dest)?;
|
||||||
|
@ -547,7 +547,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> {
|
|||||||
Rvalue::Cast(CastKind::PointerExposeAddress, _, _) => {
|
Rvalue::Cast(CastKind::PointerExposeAddress, _, _) => {
|
||||||
self.check_op(ops::RawPtrToIntCast);
|
self.check_op(ops::RawPtrToIntCast);
|
||||||
}
|
}
|
||||||
Rvalue::Cast(CastKind::PointerFromExposedAddress, _, _) => {
|
Rvalue::Cast(CastKind::PointerWithExposedProvenance, _, _) => {
|
||||||
// Since no pointer can ever get exposed (rejected above), this is easy to support.
|
// Since no pointer can ever get exposed (rejected above), this is easy to support.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1057,7 +1057,7 @@ impl<'a, 'tcx> Visitor<'tcx> for TypeChecker<'a, 'tcx> {
|
|||||||
// FIXME(dyn-star): make sure nothing needs to be done here.
|
// FIXME(dyn-star): make sure nothing needs to be done here.
|
||||||
}
|
}
|
||||||
// FIXME: Add Checks for these
|
// FIXME: Add Checks for these
|
||||||
CastKind::PointerFromExposedAddress
|
CastKind::PointerWithExposedProvenance
|
||||||
| CastKind::PointerExposeAddress
|
| CastKind::PointerExposeAddress
|
||||||
| CastKind::PointerCoercion(_) => {}
|
| CastKind::PointerCoercion(_) => {}
|
||||||
CastKind::IntToInt | CastKind::IntToFloat => {
|
CastKind::IntToInt | CastKind::IntToFloat => {
|
||||||
|
@ -426,7 +426,7 @@ impl<'tcx> Rvalue<'tcx> {
|
|||||||
| CastKind::FnPtrToPtr
|
| CastKind::FnPtrToPtr
|
||||||
| CastKind::PtrToPtr
|
| CastKind::PtrToPtr
|
||||||
| CastKind::PointerCoercion(_)
|
| CastKind::PointerCoercion(_)
|
||||||
| CastKind::PointerFromExposedAddress
|
| CastKind::PointerWithExposedProvenance
|
||||||
| CastKind::DynStar
|
| CastKind::DynStar
|
||||||
| CastKind::Transmute,
|
| CastKind::Transmute,
|
||||||
_,
|
_,
|
||||||
|
@ -1319,7 +1319,7 @@ pub enum CastKind {
|
|||||||
PointerExposeAddress,
|
PointerExposeAddress,
|
||||||
/// An address-to-pointer cast that picks up an exposed provenance.
|
/// An address-to-pointer cast that picks up an exposed provenance.
|
||||||
/// See the docs on `with_exposed_provenance` for more details.
|
/// See the docs on `with_exposed_provenance` for more details.
|
||||||
PointerFromExposedAddress,
|
PointerWithExposedProvenance,
|
||||||
/// Pointer related casts that are done by coercions. Note that reference-to-raw-ptr casts are
|
/// Pointer related casts that are done by coercions. Note that reference-to-raw-ptr casts are
|
||||||
/// translated into `&raw mut/const *r`, i.e., they are not actually casts.
|
/// translated into `&raw mut/const *r`, i.e., they are not actually casts.
|
||||||
PointerCoercion(PointerCoercion),
|
PointerCoercion(PointerCoercion),
|
||||||
|
@ -85,7 +85,7 @@ pub fn mir_cast_kind<'tcx>(from_ty: Ty<'tcx>, cast_ty: Ty<'tcx>) -> mir::CastKin
|
|||||||
(Some(CastTy::Ptr(_) | CastTy::FnPtr), Some(CastTy::Int(_))) => {
|
(Some(CastTy::Ptr(_) | CastTy::FnPtr), Some(CastTy::Int(_))) => {
|
||||||
mir::CastKind::PointerExposeAddress
|
mir::CastKind::PointerExposeAddress
|
||||||
}
|
}
|
||||||
(Some(CastTy::Int(_)), Some(CastTy::Ptr(_))) => mir::CastKind::PointerFromExposedAddress,
|
(Some(CastTy::Int(_)), Some(CastTy::Ptr(_))) => mir::CastKind::PointerWithExposedProvenance,
|
||||||
(_, Some(CastTy::DynStar)) => mir::CastKind::DynStar,
|
(_, Some(CastTy::DynStar)) => mir::CastKind::DynStar,
|
||||||
(Some(CastTy::Int(_)), Some(CastTy::Int(_))) => mir::CastKind::IntToInt,
|
(Some(CastTy::Int(_)), Some(CastTy::Int(_))) => mir::CastKind::IntToInt,
|
||||||
(Some(CastTy::FnPtr), Some(CastTy::Ptr(_))) => mir::CastKind::FnPtrToPtr,
|
(Some(CastTy::FnPtr), Some(CastTy::Ptr(_))) => mir::CastKind::FnPtrToPtr,
|
||||||
|
@ -274,7 +274,7 @@ impl<'tcx> Stable<'tcx> for mir::CastKind {
|
|||||||
use rustc_middle::mir::CastKind::*;
|
use rustc_middle::mir::CastKind::*;
|
||||||
match self {
|
match self {
|
||||||
PointerExposeAddress => stable_mir::mir::CastKind::PointerExposeAddress,
|
PointerExposeAddress => stable_mir::mir::CastKind::PointerExposeAddress,
|
||||||
PointerFromExposedAddress => stable_mir::mir::CastKind::PointerFromExposedAddress,
|
PointerWithExposedProvenance => stable_mir::mir::CastKind::PointerWithExposedProvenance,
|
||||||
PointerCoercion(c) => stable_mir::mir::CastKind::PointerCoercion(c.stable(tables)),
|
PointerCoercion(c) => stable_mir::mir::CastKind::PointerCoercion(c.stable(tables)),
|
||||||
DynStar => stable_mir::mir::CastKind::DynStar,
|
DynStar => stable_mir::mir::CastKind::DynStar,
|
||||||
IntToInt => stable_mir::mir::CastKind::IntToInt,
|
IntToInt => stable_mir::mir::CastKind::IntToInt,
|
||||||
|
@ -968,7 +968,7 @@ pub enum PointerCoercion {
|
|||||||
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
||||||
pub enum CastKind {
|
pub enum CastKind {
|
||||||
PointerExposeAddress,
|
PointerExposeAddress,
|
||||||
PointerFromExposedAddress,
|
PointerWithExposedProvenance,
|
||||||
PointerCoercion(PointerCoercion),
|
PointerCoercion(PointerCoercion),
|
||||||
DynStar,
|
DynStar,
|
||||||
IntToInt,
|
IntToInt,
|
||||||
|
@ -112,7 +112,7 @@ fn check_rvalue<'tcx>(
|
|||||||
Rvalue::Repeat(operand, _)
|
Rvalue::Repeat(operand, _)
|
||||||
| Rvalue::Use(operand)
|
| Rvalue::Use(operand)
|
||||||
| Rvalue::Cast(
|
| Rvalue::Cast(
|
||||||
CastKind::PointerFromExposedAddress
|
CastKind::PointerWithExposedProvenance
|
||||||
| CastKind::IntToInt
|
| CastKind::IntToInt
|
||||||
| CastKind::FloatToInt
|
| CastKind::FloatToInt
|
||||||
| CastKind::IntToFloat
|
| CastKind::IntToFloat
|
||||||
|
@ -4,7 +4,7 @@ fn int_to_ptr(_1: usize) -> *const i32 {
|
|||||||
let mut _0: *const i32;
|
let mut _0: *const i32;
|
||||||
|
|
||||||
bb0: {
|
bb0: {
|
||||||
_0 = _1 as *const i32 (PointerFromExposedAddress);
|
_0 = _1 as *const i32 (PointerWithExposedProvenance);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
_3 = main as fn() (PointerCoercion(ReifyFnPointer));
|
_3 = main as fn() (PointerCoercion(ReifyFnPointer));
|
||||||
_2 = move _3 as usize (PointerExposeAddress);
|
_2 = move _3 as usize (PointerExposeAddress);
|
||||||
StorageDead(_3);
|
StorageDead(_3);
|
||||||
_1 = move _2 as *const fn() (PointerFromExposedAddress);
|
_1 = move _2 as *const fn() (PointerWithExposedProvenance);
|
||||||
StorageDead(_2);
|
StorageDead(_2);
|
||||||
StorageDead(_1);
|
StorageDead(_1);
|
||||||
_0 = const ();
|
_0 = const ();
|
||||||
|
@ -5,6 +5,6 @@ fn main() {
|
|||||||
// CHECK-LABEL: fn main(
|
// CHECK-LABEL: fn main(
|
||||||
// CHECK: [[ptr:_.*]] = main as fn() (PointerCoercion(ReifyFnPointer));
|
// CHECK: [[ptr:_.*]] = main as fn() (PointerCoercion(ReifyFnPointer));
|
||||||
// CHECK: [[addr:_.*]] = move [[ptr]] as usize (PointerExposeAddress);
|
// CHECK: [[addr:_.*]] = move [[ptr]] as usize (PointerExposeAddress);
|
||||||
// CHECK: [[back:_.*]] = move [[addr]] as *const fn() (PointerFromExposedAddress);
|
// CHECK: [[back:_.*]] = move [[addr]] as *const fn() (PointerWithExposedProvenance);
|
||||||
let _ = main as usize as *const fn();
|
let _ = main as usize as *const fn();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user